我正在编写一个简单的应用程序,以在 Android 启动时通过以太网启用 adb,并使用取消按钮来防止在网络上启用 adb。当 super 用户的弹出窗口出现时,如果立即单击,一切都很好,但如果我等待几秒钟并单击“确定”,则显示无法更新。
onCreate 使用 mHandler 来启动一个 runnable,用于倒计时器。当我使用 mHandler.postDelayed 尝试延迟启动过程时,显示永远不会更新。当我使用 mHandler.postAtFrontOfQueue 时,倒计时显示功能正常,但在 super 用户对话框之后,屏幕无法更新。
倒计时器使用mHandler.postAtTime重复调用runnable。我想我需要在可运行的开头放置一些东西来重置焦点,但我对 Android 仍然是新手,并且没有运气弄清楚什么会让它高兴。
当应用程序手动运行时,一切都是正确的。在第二个 Android 上,一切都是正确的。
最佳答案
我找到了解决该问题的方法,即从使用“android.intent.action.boot_completed”更改为使用“android.intent.action.MEDIA_MOUNTED”。
我观察到 boot_completed 发生在完全启动完成之前。有某种东西,不知道到底是什么,踩在了一切之上。当我尝试使用计时器 sleep 或启动可运行程序时,如果 sleep 或计时器超出了出现问题的时间,则 sleep 和计时器将永远不会返回,而不会进入可运行程序。通过切换到media_mounted,任何踩在东西上的东西都已经过去了。
我一直在考虑使用启动应用程序从 SD 执行 init.rc 文件,因此触发媒体安装对于这种需求是有意义的。
关于java - Android java启动失去焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18008237/