在Service內部安全調用stopSelf的方法是通過使用startForeground方法開啟前臺服務。前臺服務會在狀態欄顯示一個通知,這樣系統就會認為這個服務是一個重要的服務,不會輕易被系統銷毀。
以下是一個示例代碼:
public class MyService extends Service {
private static final int NOTIFICATION_ID = 1;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
startForeground(NOTIFICATION_ID, new Notification());
// 執行一些操作
stopSelf();
return START_NOT_STICKY;
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
在上面的代碼中,我們在Service的onStartCommand方法中調用startForeground方法,傳入一個Notification對象和一個唯一的通知ID。然后執行一些操作后調用stopSelf方法來停止Service。由于Service是前臺服務,系統會認為這個服務是一個重要的服務,不會輕易被銷毀。