【问题标题】:Stop OS from killing my Process阻止操作系统杀死我的进程
【发布时间】:2014-04-20 14:39:41
【问题描述】:

我有一个应用程序,我正在从我的main activity 调用ACTION_SEND 意图。一切正常,但是当我从ACTION_SEND 意图返回我的主要活动时,main activityonCreate() 方法开始执行,但我希望它从onRestart() 方法开始。 我认为它的 bcz 操作系统会杀死我的活动以释放空间。 那么除了使用Service,还有什么方法可以阻止操作系统杀死我的活动?

【问题讨论】:

    标签: android android-intent process kill-process


    【解决方案1】:

    我认为它的 bcz 操作系统会杀死我的活动以释放空间

    可能。您可能正在自己做一些事情来破坏您的活动(例如,在为您的 ACTION_SEND Intent 调用 startActivity() 之后调用 finish())。

    那么除了使用服务之外还有什么方法可以阻止操作系统杀死我的活动?

    没有。即使是服务也可能无济于事。您的进程可以随时以任何原因终止,包括用户决定通过任务管理器或最近任务列表终止它。此外,如果用户在通过ACTION_SEND 启动的任何应用程序中旋转屏幕或导致另一个配置更改,您调用startActivity()ACTION_SEND 的活动将由于配置更改而重新创建。

    你不能假设onRestart() 会被调用。一般来说,出于这个原因,我认为onRestart() 是一种代码异味。

    【讨论】:

    • 我已经检查了我的代码并且我没有在 startActivity() 之后调用 finish()。还有一件事是主活动的onDestroy()方法永远不会被调用,但是当我从ACTION_SEND Intent(如蓝牙活动)按下返回按钮时,它会自动从onCreate()开始主活动。我没有得到的是,活动如何从 onCreate() 开始而不调用 onDestroy()。请点亮它。
    • @Vikalp:“但是当我从 ACTION_SEND Intent 按下返回按钮(如蓝牙活动)时,它会自动从 onCreate() 启动主要活动”——这意味着您的进程已终止。活动不必使用onDestroy() 调用。只有通过 BACK 或您调用finish() 或类似方式完成的那些将被销毁并通过onDestroy()。当进程终止时,进程中正在运行的任何活动都不会被破坏。
    • 好的,我知道了,但是有没有什么办法可以让我的主要活动状态恢复到我离开的地方?
    • @Vikalp:这取决于“状态”是什么。 onSaveInstanceState() 应该在 ACTION_SEND 活动进入前台时调用您的活动。欢迎您在Bundle 中添加内容。您应该在新活动实例的onCreate()onRestoreInstanceState() 中恢复Bundle,因为用户正在有效地导航回特定位置。这是标准活动生命周期的东西,请参阅developer.android.com/guide/components/…
    • 我使用了一个服务类来完成我的工作,这解决了我的问题。我将我的主要活动绑定到服务类,现在操作系统没有杀死我的活动(操作系统只会在极端内存要求下杀死我的活动)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-26
    相关资源
    最近更新 更多