Android LifeCycle for Activities及其子组件

时间:2013-05-17 12:32:32

标签: android lifecycle oncreate

我不时在我的应用程序中得到以下来自崩溃的堆栈跟踪:

java.lang.IllegalStateException: System services not available to Activities before onCreate()
at android.app.Activity.getSystemService(Activity.java:4463)
at android.widget.ArrayAdapter.init(ArrayAdapter.java:310)
at android.widget.ArrayAdapter.<init>(ArrayAdapter.java:128)
at org.MyCommands.initCommands(FICSCommands.java:78)
at org.MyCommands.MyFragementActivity.onStart(ConsoleTriangle.java:90)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1164)
at android.app.Activity.performStart(Activity.java:5114)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2273)

根据Activity LifecyleonCreate()onStart()之前的FragmentActivity,我想这也适用于onStart()。因此,我得出结论,:(所需的一切已经完成并可用。但根据堆栈跟踪情况并非如此。我想启动一些ArrayAdapter,但这失败了。 oncreate() MyFragementActivity msgText = ... .... onStart() msgText.initCommands(this)

异常发生,当应用程序在后台时,我激活它并进入前台。我想这也与背景中的太长时间有关,因此有些东西已经过了GC。

我有什么想法可以正确检查事情吗?

编辑: (由于问题所在,为了让我更清楚一点,我要问的是什么)

到目前为止我所做的事情是这样的:

initCommands(View v)
  ...
  ArrayAdapter<String> adapter = new ArrayAdapter<String>(InitialContext.getContext(),...

和MyFragementActivity

  ArrayAdapter<String> adapter = new ArrayAdapter<String>(v,...

我现在改为

{{1}}

但我仍然不明白:

  1. 通常它有效,为什么它会不时失败?
  2. 使用Activity的初始上下文而不是组件布局的View有什么区别?
  3. 如何测试?我的意思是,这个问题偶尔发生,不知道为什么?因此,如果我能做到这一点,我会很感激,如果这个改变确实解决了这个问题(或不是)。

0 个答案:

没有答案