我不时在我的应用程序中从崩溃中获得以下堆栈跟踪:
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,...
但是我仍然不明白:
- 正常运行,为什么会时不时失效?
- 使用 Activity 的初始上下文而不是组件布局的 View 有什么区别?
- 如何测试它?我的意思是,这个问题是偶尔发生的,不知道为什么?因此,如果更改确实解决了问题(或没有),我将不胜感激。