gpt4 book ai didi

Android 后台服务类 "onStartCommand"方法在设备启动时不执行其中的所有代码

转载 作者:行者123 更新时间:2023-11-29 01:15:05 25 4
gpt4 key购买 nike

我有一个后台服务,我可以使用应用程序菜单启动或停止该服务。该服务也可以在模拟器设备启动时启动。但奇怪的是,我只在设备启动时看到 toast 消息,而 jobThread 没有启动......即使我从菜单中触发......我仍然只看到 toast 消息。

但是,如果我重新启动 AndrodiStudio,并运行应用程序并从菜单启动服务,它工作正常.. 似乎 onStartCommand 中的代码在设备重新启动时仅部分执行。怎么了?

..taskThread 只是调用同一个 calss (this) 服务类中的一个方法,将消息打印到 logcat。

在我的服务类中:

@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 标志,然后从设备中提取包含日志的文件。

关于Android 后台服务类 "onStartCommand"方法在设备启动时不执行其中的所有代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40318825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com