首先,強力運作服務對使用者的意願是非常糟糕的模式。
無論如何,您可以使用BroadcastReceiver重新啟動它,它處理從您服務的onDestroy()發送的廣播。
StickyService.java
public class StickyService extends Service
{
private static final String TAG = "StickyService";
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.e(TAG, "onStartCommand");
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
sendBroadcast(new Intent("YouWillNeverKillMe"));
}
}
RestartServiceReceiver.java
public class RestartServiceReceiver extends BroadcastReceiver
{
private static final String TAG = "RestartServiceReceiver";
@Override
public void onReceive(Context context, Intent intent) {
Log.e(TAG, "onReceive");
context.startService(new Intent(context.getApplicationContext(), StickyService.class));
}
}
在清單檔案中聲明元件:
在元件中啟動StickyService(即應用程式,活動,片段):
startService(new Intent(this, StickyService.class));
要麼
sendBroadcast(new Intent("YouWillNeverKillMe"));