Service解析(一)啟動和繫結Service

2021-09-10 21:33:02 字數 1527 閱讀 1370

service是四大元件之一,在後台執行,多用來在後台執行耗時操作,servie是執行在主線程中都

public class myservice extends service 

@override

public ibinder onbind(intent intent)

@override

public void unbindservice(serviceconnection conn)

@override

public void oncreate()

@override

public int onstartcommand(intent intent, int flags, int startid)

@override

public void ondestroy()

class mybinder extends binder

}}

需要繼承binder去實現自定義功能

final intent intent = new intent(launcheractivity.this, myservice.class);

findviewbyid(r.id.btn_1).setonclicklistener(new view.onclicklistener()

});findviewbyid(r.id.btn_2).setonclicklistener(new view.onclicklistener()

});findviewbyid(r.id.btn_3).setonclicklistener(new view.onclicklistener()

});findviewbyid(r.id.btn_4).setonclicklistener(new view.onclicklistener()

});

serviceconnection connection = new serviceconnection() 

@override

public void onservicedisconnected(componentname name)

};

執行startservice,生命週期是oncreate,onstartcommand

執行stopservice,生命週期是ondestory

執行bindservice,生命週期是oncreate,onbind

執行unbindservice,生命週期是ondestory

只執行stopservie,不執行startservice,service無響應

只執行unbindservice,不執行bindservice,service因為沒有繫結崩潰

都執行了startservie和bindservice,然後只執行stopservie或者unbindservie,程式都無響應,只有都呼叫完了stopservie和unbindservie才呼叫ondestory

Service的啟動 繫結過程

摘自 android高階解密 service啟動過程 第一步 contextimpl到activitymanagerservice的呼叫過程 第二步 activitythread啟動service 1 processrecord主要用來描述執行的應用程式程序的資訊 2 loadedapk是乙個apk...

service的隱式啟動和顯示啟動

private void validateserviceintent intent service else 既然,原始碼裡是這樣寫的,那麼這裡有兩種解決方法 1 設定action和packagename intent mintent new intent mintent.setaction 你定義...

Service的啟動 控制和互動

為了啟動乙個 service 呼叫startservice 你可以使用動作來隱式啟動乙個已經註冊的 service 或者顯式的指定 service 啟動。如果你的程式沒有 service 所需的許可權,那麼,這個呼叫會丟擲乙個 securityexception 下面的片段顯示了兩種啟動 servi...