Android服务正在执行两次
我正在制作一个android应用程序。 我通过在主活动的onCreate方法中调用方法startService来启动启动活动中的服务Android服务正在执行两次,android,service,handler,Android,Service,Handler,我正在制作一个android应用程序。 我通过在主活动的onCreate方法中调用方法startService来启动启动活动中的服务 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.getActionBar().hide(); setContentView(R.layout.activity_main);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.getActionBar().hide();
setContentView(R.layout.activity_main);
starService();
}
private void starService() {
startService(new Intent(getBaseContext(), HelenaService.class));
}
当我干杯时,看看如何在我的服务中调用这些方法。我看到这个方法被调用了两次
@Override
public void onStart(Intent intent, int startId) {
Toast.makeText(this, "service started", Toast.LENGTH_SHORT).show();
}
我的意思是,我可以看到第一个吐司立即被调用,几秒钟后,完全相同的吐司消息出现
如何确保onStart方法只调用一次。尝试了一个标志,但变量已重新启动
有什么帮助吗?或通知?正在“重新启动”标志变量,因为您正在starService()中启动新服务 在没有看到更多代码的情况下,我可以看到的解决方案是在starService()中添加一个标志 然后: 放置一个
Log.e(标记“---onStart()--”)
和Log.e(标记“--onStartCommand()--”)代码>在各自的方法中
在“error”下检查LogCat,如果同时看到这两个日志,则会调用这两个方法
如果在服务启动时调用这两个方法,并且它们都包含一个toast,那么这就是您看到toast两次的原因
此外,如果关闭应用程序后服务继续运行,您可能希望强制停止/清除应用程序设置中的数据。您需要实现停止服务的逻辑,例如stopSelf() 你能多发一些这项服务吗?另外,您在哪里调用startService()?我在启动器活动的onCreate方法中调用starService()。该服务的方法中只有toast msg:onStartCommand和onStartCommand检查我的答案是否准确。你是说我看到两次toast msg,因为我在两个方法中都放了两个toast msg?是的,但是每个吐司都有不同的味精,“开始时吐司”和“startCommand中吐司”,我在几秒钟内看到这两个词……啊,看到了吗,这些都是最初需要提供的细节。你做日志了吗?发生了什么?试着,我仍然可以看到该服务正在执行两次。你需要发布你的代码,从你发布的代码片段中无法判断。
private Boolean flag = true;
private void starService() {
if (flag){
startService(new Intent(getBaseContext(), HelenaService.class));
flag = false;
}
}
String TAG = CLASSNAME.class.getConicalName();