0

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

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)

根据活动生命周期onCreate()在之前onStart(),我猜,这也适用于FragmentActivity. 因此,我得出结论,所需的一切都onStart()已经完成并且可用。但根据堆栈跟踪,情况并非如此。我想启动一些 ArrayAdapter,但这失败了。:(

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

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

编辑:( 由于问题,让我更清楚我在问什么)

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

oncreate()
  MyFragementActivity msgText = ...
....
onStart()  
  msgText.initCommands(this)

并在 MyFragementActivity

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

我现在改成

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

但是我仍然不明白:

  1. 正常运行,为什么会时不时失效?
  2. 使用 Activity 的初始上下文而不是组件布局的 View 有什么区别?
  3. 如何测试它?我的意思是,这个问题是偶尔发生的,不知道为什么?因此,如果更改确实解决了问题(或没有),我将不胜感激。
4

0 回答 0