2011-11-24 32 views
1

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

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

+0

难道你有你的应用程序的自定义应用程序对象,并在Application.onCreate()中导致这样的行为? –

+0

没有我不从应用程序对象 –

+0

启动活动也许你可以从DDMS发布stacktrace? –

回答

2

是的,应用程序可以从其他活动开始。例如(我想这是你的场景):

  1. 你通常启动应用程序。启动器活动已创建,用户数据已初始化,一切正常,并且您正在继续使用应用程序 - 启动其他活动等。
  2. 你接到来电,android会杀死你的应用程序,因为它需要更多的内存来处理这个调用。
  3. 您的通话结束并返回到应用程序。 Android以这种方式恢复活动堆栈:调用application#onCreate,调用your_last_visited_activity#onCreate。启动器活动#onCreate未被调用!所以用户的数据没有初始化,你会得到NPE。

如何解决:

  1. 初始化用户在应用#的onCreate数据能够继续从任何活动的工作。

如何模拟机器人的追杀:

  1. 启动应用程序,并启动一些活动。
  2. 开始任务杀手并杀死你的应用程序(当它需要更多的内存时,android也是这样做的)
  3. 返回到你的应用程序(通过例如最近)。 Android应该还原活动任务(请参阅logcat中的ActivityManager日志跟踪)

希望这会有所帮助。

相关问题