android - 为什么应用程序有时会在 killProcess 上重新启动?

标签 android android-activity activity-lifecycle android-windowmanager

通常,通过调用退出我的应用程序:

android.os.Process.killProcess(android.os.Process.myPid());

表现良好,没有发生意外。

但每隔一段时间,应用程序会再次重启(退出后!)。

相关日志 fragment 显示:

.631: I/Process(15495): Sending signal. PID: 15495 SIG: 9
.641: W/AudioFlinger(121): write blocked for 252 msecs, 1279 delayed writes, thread 0xdc18
.651: I/ActivityManager(164): Process com.ef.myapp (pid 15495) has died.
.651: I/WindowManager(164): WIN DEATH: Window{463659e8 com.ef.myapp/com.ef.myapp.MainActivity paused=false}
.661: I/AudioService(164):  AudioFocus  abandonAudioFocus() from android.media.AudioManager@460b2b98
.701: I/ActivityManager(164): Start proc com.ef.myapp for activity com.ef.myapp/.MainActivity: pid=15589 uid=10077 gids={3003}

我知道,根据 Android 操作系统的设计,killProcess()不是终止应用程序的正确方法。这是因为 killProcess()停止进程 immediately不给应用程序任何方式或机会来阻止它或为它做准备。

我知道当我调用finish() ,应用程序堆栈只是被推到后台(并且仍然存在于内存中)。 Android 本身决定何时关闭应用程序(即从内存中删除其实例),通常这是在应用程序变为“最旧未使用时间最长”时完成的。如果它真的是last one,它的行为实际上更容易预测。 .

问题是 finish()只停止并销毁它被调用的 Activity 。它不会停止应用程序或其他 Activity 产生的其他 Activity 。因此,为了在开发过程中便于测试和调试,我使用 killProcess()作为方便的快捷方式。

但现在我发现这会产生副作用,即应用程序有时会在 self 终止后立即重新启动 - 所有都在 30 毫秒内

一个直接的解决方案是遍历所有应用程序的 Activity 和 finish()他们。但在继续之前,我非常想了解 Android 操作系统中的什么可以让应用程序自行复活。

为什么 Android 会让被杀死的应用程序重新启动?

为什么不一致? (即有时)

最佳答案

应用程序首次从安装程序、网络浏览器和 IDE(IntelliJ、Eclipse 等)启动的方式存在一个已知错误。请尝试不启动安装您的应用,然后从可用应用列表中启动,看看问题是否消失。查看很久以前提交的与问题相关的这些问题:

http://code.google.com/p/android/issues/detail?id=2373

http://code.google.com/p/android/issues/detail?id=26658

关于android - 为什么应用程序有时会在 killProcess 上重新启动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11726100/

相关文章:

android - 按 Back 是否总是导致 Activity 完成()?

Android:如果最初的 Activity 不是从启动器启动的,则通知开始新 Activity 而不是恢复旧 Activity

android - 如何实现Android广播接收器

android - 在超时警告通知后检索 Activity

android - Retrofit 2.0 解析 HTML

android - 如何与三星手机上的 BadgeProvider 交互以向应用程序图标添加计数?

Android:针对 res 文件夹,用于在 eclipse 中进行调试

java - 为什么当我创建这个新位图时,它的背景是深灰色?如何将其设置为与布局背景相同的颜色?

android - android 的主页按钮到底在做什么?

android - Activity 开始但在屏幕关闭或锁定时不可见