Android 安卓服务后台
我有一个Android 安卓服务后台,android,android-intent,Android,Android Intent,我有一个活动,它在onCreate()中调用startService(),并带有一些参数。 该服务运行良好(我使用了一个计时器),但当我退出活动(onPause()或onDestroy())时,所发生的是该服务被重新创建!它调用onCreate然后调用onStartCommand(),意图为空!(正常) 那我该怎么做才能重新找回旧的意图 我认为有START\u REDELIVER\u INTENT但如何使用它!这条路对吗 PS:为什么服务被终止,尽管它扩展了服务?这是否取决于活动的生命周期=>所
活动
,它在onCreate()
中调用startService()
,并带有一些参数。
该服务运行良好(我使用了一个计时器
),但当我退出活动(onPause()或onDestroy()
)时,所发生的是该服务被重新创建!它调用onCreate然后调用onStartCommand(),意图为空!(正常)那我该怎么做才能重新找回旧的意图
我认为有
START\u REDELIVER\u INTENT
但如何使用它!这条路对吗
PS:为什么服务被终止,尽管它扩展了服务?这是否取决于活动的生命周期=>所以谁又给他打了电话
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而不是service经过一些研究,我找到了解决方案,对一些人来说可能很简单,因此阅读以下内容:并且我们不会重新启动服务本身,我们应该返回onCommand方法START\u NOT\u STICKY
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//TODO
return START_NOT_STICKY ;
}
活动结束时,您是否已取消计时器?计时器在不同线程上运行可能导致此问题。尝试通过
您的_timer_对象在活动结束时取消计时器。Cancel()代码>返回方法时在onStartCommand()中编写的代码。您是否返回“返回开始”。如果是,则服务将自行重新启动。你必须调用stopSelf()或stopService(Intent service)@VipinSharma,即使我退出了应用程序,计时器仍然工作!但也许在很短的时间内它就取消了,或者其他一些事情!我注意到,对象计时器也重新创建了!如何使一个实例始终运行?@Rollno1该服务不应自行重新启动!因为它有参数可供使用!