Android后台服务类“;onStartCommand";方法不会在设备启动时执行其中的所有代码
我有一个后台服务,我可以启动或停止使用应用程序菜单。 此服务也可以在模拟器设备启动时启动。但奇怪的是,我只在设备启动时看到toast消息,而jobThread没有启动。。。即使我从菜单中触发。。我仍然只看到祝酒词 但如果我重新启动AndrodiStudio,运行应用程序并从菜单启动服务,它就可以正常工作。。似乎当设备重新启动时,Android后台服务类“;onStartCommand";方法不会在设备启动时执行其中的所有代码,android,multithreading,android-broadcastreceiver,background-service,Android,Multithreading,Android Broadcastreceiver,Background Service,我有一个后台服务,我可以启动或停止使用应用程序菜单。 此服务也可以在模拟器设备启动时启动。但奇怪的是,我只在设备启动时看到toast消息,而jobThread没有启动。。。即使我从菜单中触发。。我仍然只看到祝酒词 但如果我重新启动AndrodiStudio,运行应用程序并从菜单启动服务,它就可以正常工作。。似乎当设备重新启动时,onStartCommand中的代码仅部分被删除。怎么了 ..taskThread只调用将消息打印到logcat的同一calss(this)服务类中的一个方法 在我的服务
onStartCommand
中的代码仅部分被删除。怎么了
..taskThread只调用将消息打印到logcat的同一calss(this)服务类中的一个方法
在我的服务类中:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
serviceRunning = true;
Toast.makeText(this,"onStartCommand!...Service Started", Toast.LENGTH_LONG).show();
Thread taskThread = new Thread(new finalRunnableInnerClass(startId));
taskThread.start();
return START_STICKY;
}
当我们处理必须在启动时启动的应用程序时,我们注意到最初的日志消息并没有写入设备的日志缓冲区。经过一些调查,我们得出结论,
Log
类的方法在启动后需要一段时间才能发挥作用
因此,如果新线程正在运行的唯一指示只是logcat中的一条消息,那么可能是线程运行正常,但日志消息根本没有显示出来
通过添加将日志写入文件的功能,我们解决了启动后调试问题。任何时候我们想要测试开机后功能,我们都会使用
WRITE_LOGS_to_FILE
标志集编译代码,然后从设备中提取带有日志的文件。谢谢您的回答!是的,事实就是这样,而且是真的!。我的线程运行良好!。我通过将此代码放入backgroundService线程的run()方法中确认了这一点
Handler=newhandler(Looper.getMainLooper());
handler.post(新的Runnable(){
@凌驾
public void run(){Toast.makeText(getApplicationContext(),“running”,Toast.LENGTH_SHORT).show();
}
});代码>