[英]Android Services goes to sleep mode when app destroyed
當應用關閉並注釋掉Toast消息時,sendBroadcast(intent)不會傳遞數據,但是當Toast消息在計時器內打開時,它可以正常工作。 聽起來很有趣,但是需要一個解決方案,以便在應用被銷毀時如何運行此服務。
import android.annotation.SuppressLint;
import android.app.Service;
import android.content.Intent;
import android.os.CountDownTimer;
import android.os.IBinder;
@SuppressLint("SetTextI18n")
public class BroadcastService extends Service {
public static final String COUNTDOWN_BR = "com.example.broadcast_receiver";
private CountDownTimer _Timer;
@Override public int onStartCommand(Intent intent, int flags, int startId) {
_Timer = new CountDownTimer(15000, 1000) {
public void onTick(long millisUntilFinished) {
Intent intent = new Intent(COUNTDOWN_BR);
intent.putExtra("countdown", millisUntilFinished);
BroadcastService.this.sendBroadcast(intent);
//Toast.makeText(BroadcastService.this, millisUntilFinished/1000+"", Toast.LENGTH_SHORT).show();
}
public void onFinish() {
_Timer.cancel();
}
}.start();
return START_NOT_STICKY;
}
@Override public IBinder onBind(Intent arg0) {
return null;
}
}
對於您而言,服務由您的應用程序啟動,這意味着它將在主進程上運行。 因此,在您的應用程序終止時,該服務也會終止。
為了不停止進程。 您可能需要研究服務的onTaskRemoved
。 從onTaskRemoved
,您可以發送廣播以再次啟動該服務。
Intent intent = new Intent("com.android.ServiceStopped");
sendBroadcast(intent);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.