Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我的android应用程序一夜之间就关闭了_Android - Fatal编程技术网

为什么我的android应用程序一夜之间就关闭了

为什么我的android应用程序一夜之间就关闭了,android,Android,我仍在努力了解我的Android应用程序的生命周期。我让我的应用程序在晚上和早上在后台运行,当我再次单击应用程序图标时,会出现启动屏幕。从日志文件中,我的Android应用程序将重新启动。不过,它仍将显示昨晚的旧活动。奇怪的是,我只能在我的手机上复制,而不能在另一个开发者的手机上复制,而且我一夜之间也找不到任何应用程序在做什么特别的事情: 这不应该是由于电池节电,因为我的手机是负责通宵 这不应该是因为内存有限,因为一夜之间没有人使用手机 任何人都有关于Android应用程序生命周期(而非活动生命

我仍在努力了解我的Android应用程序的生命周期。我让我的应用程序在晚上和早上在后台运行,当我再次单击应用程序图标时,会出现启动屏幕。从日志文件中,我的Android应用程序将重新启动。不过,它仍将显示昨晚的旧活动。奇怪的是,我只能在我的手机上复制,而不能在另一个开发者的手机上复制,而且我一夜之间也找不到任何应用程序在做什么特别的事情:

  • 这不应该是由于电池节电,因为我的手机是负责通宵
  • 这不应该是因为内存有限,因为一夜之间没有人使用手机

  • 任何人都有关于Android应用程序生命周期(而非活动生命周期)的好链接吗?

    应用程序由一个或多个组件组成:活动、服务、广播接收器和内容提供者。它们中的每一个都作为应用程序的一部分运行,都在同一个进程中。此外,这些组件的每个入口点(onCreate、onStart等)都运行在应用程序进程的主(或UI)线程上。当你的应用程序被放到后台时,进程被缓存并随时准备就绪。但是,这要由框架和内核来决定限制


    所以,为什么你的应用程序在一台设备上被破坏而不是在另一台设备上被破坏的原因是:它取决于设备和设备上运行的内容。在Android框架下运行的Linux内核被告知内存资源的进程“限制”是什么,而ActivityManager框架组件会在给定进程属于某种类型时通知内核。例如,一个只有一个活动的简单应用程序会获得一定的限制和优先级(从进程杀手的角度来看,而不是从调度器的角度)。另一个使用活动和标记为前台服务的服务的应用程序获得了不同的优先级,这使得它“更难”杀掉。答案的“设备上运行的是什么”部分只是:在每个设备上安装并激活了哪些其他APK。您的设备可能内存更紧张,或者您可能有其他具有前台服务的应用程序经常尝试访问网络等。因此,活动/服务/广播接收器/内容提供商生命周期非常重要,因为它决定了应用程序的整个过程何时被破坏。

    您能否提供有关应用程序正在执行的操作的更多详细信息,是的,除了活动之外,我们还有意向服务和广播接收器,所以应用程序在后台运行。它还监视网络连接的变化。通常我的手机在夜间处于飞行模式。我的应用程序没有崩溃,否则我会看到堆栈跟踪。如果你的服务完全基于意图,并且没有任何东西向它们发出意图,它们将被销毁,除非标记为“前台”。BroadcastReceivers仅在激发其接收的意图时才处于活动状态。否则,它们将被销毁,如果应用程序中没有任何其他内容处于活动状态,则其进程将被销毁。因此,底线是,如果您的活动因点击主页返回桌面而暂停,等等,并且没有其他东西在使用您的服务,那么可以假设系统决定在一夜之间破坏应用程序进程。非常感谢。这很有帮助。我想问题是为什么它不会发生在其他开发者的手机上。似乎我们仍然无法回答这个问题。感谢您的详细解释。当框架/内核决定终止应用程序时,应用程序将调用哪些方法?否。当应用程序因回收资源而终止时,它只是发送了一个信号并被销毁。没有相应的生命周期事件。