【问题标题】:Handling application activities if OS kills the app如果操作系统终止应用程序,则处理应用程序活动
【发布时间】:2015-12-02 16:27:36
【问题描述】:

我在 Play 商店中启动并运行了一个应用程序,我遇到了一个问题,即 android 操作系统会杀死我的应用程序。

Scenario/Steps :

1) Open app, move to any screen.
2) Minimise the app by clicking HOME button.
3) Open several other apps.(say 14 to 15 apps).
4) And now launch my app it CRASHES!!!!.

我注意到的是,它不是从启动屏幕开始的应用程序,而是从它离开的地方开始,因为我的所有数据都丢失了,它给了我空指针异常。

理想情况下,我的应用应该从启动画面开始,因为我在那里加载所有数据并将其传递给其他活动。

如何检查我的应用程序是否被终止并从启动屏幕加载?

我也扩展了 Application 类,但我不知道如何使用它。

【问题讨论】:

  • 操作系统可以在需要内存的任何时候销毁您的应用程序,您的说法是在您再次单击启动器时杀死您的应用程序后,它不会进入您的启动画面?
  • @j2emanue 没错,但在这种情况下,我希望我的应用程序从启动画面开始。
  • 这就是在android上使用静态变量作为存储的方式
  • @Selvin 那么我该如何解决呢?你能帮帮我吗?
  • 他有类似class IShouldReadTheGuidesBecauseImNoobStorage { public static Object value; } 的东西然后在启动时他有:class Splash extends Activity { onCreate() { IShouldReadTheGuidesBecauseImNoobStorage.value = loadValueAndStartNewActivity();}} 然后在 NewActivity 他使用IShouldReadTheGuidesBecauseImNoobStorage.value 没有空检查...

标签: android android-activity android-applicationinfo


【解决方案1】:

我认为您可能正在使用静态变量,这只是一种预感。无论如何,你可以在你的 mainActivity onCreate 或 onResume 中试试这个:

if (isTaskRoot()) {
    // This activity is at root of task, so launch main splash screen 
} else { 
    // This activity isn't at root of task, so continue
} 

但这远离了我认为的真正问题:相反,我会在 Activity 类中查看 onSaveInstanceState:

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) {
    // Save the user's current  state 
    savedInstanceState.putString("myStaticVariable", sStaticVariableAreBad);
    // Always call the superclass so it can save the view hierarchy state 
    super.onSaveInstanceState(savedInstanceState);
} 

然后在 onCreate 中检查 Activity 是否之前被销毁:

// Check whether we're recreating a previously destroyed instance 
if (savedInstanceState != null) {
    // Restore value of members from saved state 
    sStaticVariableAreBad = savedInstanceState.getString("myStaticVariable");

}

【讨论】:

  • 谢谢,但是什么是 isTaskRoot() ?我该如何使用它?
猜你喜欢
  • 2015-03-20
  • 1970-01-01
  • 1970-01-01
  • 2013-05-21
  • 2015-05-25
  • 1970-01-01
  • 1970-01-01
  • 2021-09-08
  • 1970-01-01
相关资源
最近更新 更多