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...