在實現服務時,START_STICKY 和 START_NOT_STICKY 有什麼區別?


簡介

以下是Android中實現服務的步驟

  • 建立服務類:第一步是建立一個擴充套件android.app.Service類的服務類。此類將定義服務的行為。

  • 啟動服務:您需要使用一個Intent呼叫startService()方法,該Intent標識要啟動的服務。您可以藉助BroadcastReceiver或Activity來完成此操作。

  • 停止服務:您需要使用一個Intent呼叫stopService()方法,該Intent標識要停止的服務。您也可以在服務類中呼叫stopSelf()方法來停止服務。

  • 繫結服務:如果您想從Activity或BroadcastReceiver與服務互動,則可以使用bindService()方法繫結服務。這使我們能夠透過介面與服務進行通訊。

  • 解除繫結服務:在實現服務後,如果您想解除繫結服務,則應使用unbindService()方法解除繫結。

  • 處理服務生命週期:正確處理服務生命週期對於避免浪費資源至關重要。您可以透過在服務類中實現onCreate()、onStartCommand()、onBind()和onDestroy()方法來完成此操作。

以下是Android中實現服務的程式碼

package com.example.java_test_application;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
public class MyService extends Service {
   @Override
   public void onCreate() {
       super.onCreate();
       // code to initialize the Service
   }
   @Override
   public int onStartCommand(Intent intent, int flags, int startId) {
       // code to perform background tasks
       return START_STICKY;
   }
   @Override
   public IBinder onBind(Intent intent) {
       // code to bind the Service
       return null;
   }
   @Override
   public void onDestroy() {
       super.onDestroy();
       // code to stop the Service and release resources
   }
}

要啟動服務,您可以使用標識要啟動的服務的Intent呼叫startService()方法。

Intent intent = new Intent(this, MyService.class);
startService(intent);

要停止服務,您可以使用標識要停止的服務的Intent呼叫stopService()方法。

Intent intent = new Intent(this, MyService.class);
stopService(intent);

什麼是Android中的START_STICKY?

START_STICKY是Android中的一種服務,如果它因記憶體不足而被終止或停止,系統將重新啟動它。當服務重新啟動時,onStartCommand()方法將被呼叫,並傳入一個空Intent。這對於執行後臺任務(例如播放音樂或監控感測器)的服務很有用。當服務被重新啟動時,系統將使用空Intent呼叫onStartCommand()方法。這允許服務從其被終止或停止之前的地方繼續其操作。

以下是如何在Android應用中使用START_STICKY啟動服務

 Intent intent = new Intent(this, MyService.class);
startService(intent);

START_STICKY是一種用於執行後臺任務的有用服務。即使使用者切換到另一個應用程式或裝置,這些服務也需要繼續在後臺執行。透過使用START_STICKY,您可以確保即使服務被終止或停止,它也會繼續執行。

什麼是Android中的START_NOT_STICKY?

START_NOT_STICKY是Android中的一種服務,如果它被終止或停止,系統將不會重新啟動它。它適用於執行特定任務並且不需要在後臺繼續執行的服務。它用於執行不需要在後臺執行的一次性操作。

以下是如何在Android應用中使用START_NOT_STICKY啟動服務

Intent intent = new Intent(this, MyService.class);
startService(intent);

結論

總之,START_STICKY用於需要在後臺繼續執行的服務,即使它們被終止或停止;而START_NOT_STICKY用於執行特定任務並且不需要繼續執行的服務。

更新於: 2023年5月9日

2K+ 瀏覽量

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告