我有一个Activity
,它用一些参数在onCreate()
中调用startService()
。服务运行良好(我使用Timer
),但是当我退出活动(onPause() or onDestroy()
)时,发生的事情是重新创建服务!它调用 onCreate 然后 onStartCommand() 以空意图!(正常)
那么我应该怎么做才能恢复旧意图?!
我认为有START_REDELIVER_INTENT
,但如何使用它!这是正确的方法吗?
PS:为什么服务被杀死,但它extends
服务?这是否取决于活动的生命周期=>那么谁又打电话给他了?
public class MyService extends Service {
private static Timer timer = new Timer();
@Override
public void onCreate() {
Log.d(TAG, "onCreate");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if(intent != null){
Bundle bundle = intent.getExtras();
if (bundle != null)
{
timer.scheduleAtFixedRate(new Action(),15000 , 15000);
}
}
Action() {
timer = new Timer();
timer.scheduleAtFixedRate(new Action(),15000 , 15000);
}
}
尝试使用 intentService 而不是服务
经过一些研究,我找到了解决方案,对某些人来说可能很简单,所以通过阅读以下内容: START_STICKY和START_NOT_STICKY,并且我们不会重新启动服务本身,我们应该返回onCommand方法START_NOT_STICKY
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//TODO
return START_NOT_STICKY ;
}