是否始终调用Android启动器活动?

时间:2011-11-24 05:15:40

标签: android android-activity

是否始终调用Android启动器活动(android.intent.category.LAUNCHER)。或者应用程序可以从另一个活动开始?

目前我做一些初始化的东西,比如“当前用户加载”,但有时我看到应用程序崩溃,因为当前用户为空,这意味着启动了另一个活动并且之前没有创建启动器活动。

1 个答案:

答案 0 :(得分:2)

是的,可以从其他活动开始申请。例如(我想这是你的情况):

  1. 您通常会启动该应用程序。创建启动器活动,初始化用户数据,一切正常,您继续使用您的应用程序 - 启动其他活动等等。
  2. 您接到来电并且Android会杀死您的应用程序,因为它需要更多内存来处理呼叫。
  3. 您的通话结束,然后您返回申请。 Android以这种方式恢复活动堆栈:调用application#onCreate,调用your_last_visited_activity#onCreate。未启动启动器活动#onCreate!因此,用户的数据未初始化,您将获得NPE。
  4. 如何解决:

    1. 在Application#onCreate中初始化用户的数据,以便能够从任何活动中继续工作。
    2. 如何模拟android的杀戮:

      1. 启动您的应用程序并启动一些活动。
      2. 启动任务杀手并杀死你的应用程序(当需要更多内存时,android也会这样做)
      3. 返回您的申请表(通过例如最近)。 Android应该恢复活动任务(请参阅logcat中的ActivityManager日志跟踪)
      4. 希望这有帮助。