回覆列表
  • 1 # 扶尾貓品茗花念伊

    只需要重新startService即可重新呼叫service的onStart()。

    1.Service是在一段不定的時間執行在後臺,不和使用者互動應用元件。每個Service必須在manifest中透過<service>來宣告。可以透過contect.startservice和contect.bindserverice來啟動。

    2.Service和其他的應用元件一樣,執行在程序的主執行緒中。這就是說如果service需要很多耗時或者阻塞的操作,需要在其子執行緒中實現。

    service的兩種模式(startService()/bindService():

    1.本地服務LocalService用於應用程式內部。

    它可以啟動並執行,直至有人停止了它或它自己停止。在這種方式下,它以呼叫Context.startService()啟動,而以呼叫Context.stopService()結束。它可以呼叫Service.stopSelf()或Service.stopSelfResult()來自己停止。不論呼叫了多少次startService()方法,你只需要呼叫一次stopService()來停止服務。

    用於實現應用程式自己的一些耗時任務,比如查詢升級資訊,並不佔用應用程式比如Activity所屬執行緒,而是單開執行緒後臺執行,這樣使用者體驗比較好。

    2.遠端服務RemoteService用於android系統內部的應用程式之間。

    它可以透過自己定義並暴露出來的介面進行程式操作。客戶端建立一個到服務物件的連線,並透過那個連線來呼叫服務。連線以呼叫Context.bindService()方法建立,以呼叫Context.unbindService()關閉。多個客戶端可以繫結至同一個服務。如果服務此時還沒有載入,bindService()會先載入它。

  • 2 # 使用者3937226028394

    Android中,當Service被kill後,如果重啟需要使用BroadcastReceiver來實現,即廣播接收者,例如利用BroadcastReceiver註冊網路廣播或者開關機廣播,當接收到廣播後直接啟動service,這樣就可以保證service被kill後,自動啟動。

    實現程式碼:

    1.在配置檔案AndroidManifest.xml中向系統註冊BroadcastReceiver

    2.需要新增相應許可權

    3.在Receiver中就可以新增開機,或者網路狀態改變後需要進行的操作

    public class BootCompletedReceiver extends BroadcastReceiver {

    @Override

    public void onReceive(Context context, Intent intent) {

    }

    }

    4.執行操作,Intent intent = new Intent(context,Service.class); context.startService(intent); 這樣即可開機,或者網路狀態改變後啟動Service了。

  • 中秋節和大豐收的關聯?
  • 怎樣去除木製傢俱上的各種汙漬?