這只是我在學(xué)Android過程中對于所學(xué)知識的鞏固和方便日后查詢的學(xué)習(xí)筆記,能幫助到有需要的和我一樣的初學(xué)者就更好了
服務(wù)中的代碼是運(yùn)行在主線程中的,所以不可以直接做需要長時(shí)間維持的動作
但是雖然其運(yùn)行在主線程中蕊梧,但是卻不能直接更新UI
Service的具體實(shí)現(xiàn)##
1、MyService繼承Service
2、重寫onCreate()音榜、onStartCommand()、onDestroy()
3捧弃、Intent開啟服務(wù)或Notification開啟前臺服務(wù)
Service與Activity的通信(Binder)
1赠叼、新建MyService繼承Service
2、新建MyService內(nèi)部類MyBinder繼承Binder類并使IBinder onBinder()返回此對象
3违霞、Activity中新建ServiceConnection接口對象connection并重寫其中方法
4嘴办、建立Intent并調(diào)用bindService()與unbindService()來綁定與解綁
public MyService extends Service{
private MyBinder mbinder=new MyBinder();
class MyBinder extends Binder{
//方法,如void start(); void stop();
}
@override
public IBinder onBinde(Intent intent){
return mbinder;
}
}
Activity中
private MyService.MyBinder myBinder;
private ServiceConnection connection=new ServiceConnection(){
@override
public void onServiceConnected(ComponentName name ,IBinder service){
myBinder=(MyService.MyBinder)service;
myBinder.start();//MyBinder中的方法
}
@override
public void onServiceDisConnected(ComponentName name){
//這里貌似不用寫什么東西
}
}
綁定與解綁
Intent intent=new Intent(MainActivity.this ,MyService.class);
bindService(intent ,conntction ,BIND_AUTO_CREATE);
-------------------------------------------------------------------------------
unbindeService(connection);
前臺服務(wù)
public class MyService extends Service{
@override
public void onCreate(){
Intent intent=new Intent(this ,MainActivity.class);
PeddingIntent pi=PeddingIntent.getActivity(this ,0 ,intent ,0);
Notification nocification=new NotificationCompat.Builder(this)
...............
.setContentIntent(pi)
.build();
startForeground(1 ,notification);
}
}
IntentService
運(yùn)行完代碼就關(guān)閉服務(wù)
IntentService的onHandleIntent()可進(jìn)行UI更新
具體實(shí)現(xiàn)
繼承IntentService即可