sendBroadcast(intent)在应用程序关闭并注释掉Toast消息时没有传递数据,但是当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;
}
}
答案 0 :(得分:0)
对于您而言,服务由您的应用程序启动,这意味着它将在主进程上运行。因此,在您的应用程序终止时,该服务也会终止。
为了不停止该进程。您可能需要调查服务中的onTaskRemoved
。
您可以从onTaskRemoved
发送广播以重新启动该服务。
Intent intent = new Intent("com.android.ServiceStopped");
sendBroadcast(intent);