所以我遇到问题我无法在Android中解决问题。
我的程序使用Application类存储全局变量。
在那里我有以下
public ExampleClass SetOfExamples[];
@Override
public void onCreate() {
super.onCreate();
_appCtrl = this;
SetOfExamples = new ExampleClass[10];
// ARRAY IS INITED HERE - all entrys are setup.
}
然后在我的活动中
protected void onResume() {
super.onResume();
appState = ((MyApplication)this.getApplication());
if(appState!=null)
{
if(appState.SetOfExamples[1]!=null)
{
// Do stuff
}
else
{
// What do I do ???
}
}
}
经常在部署的应用程序中(但永远不能重现自己!!!),它落入了代码的“我该怎么做”部分。
那为什么呢? ,如何在调用myapplication create之前恢复我的活动? 或者是由myapplication创建的数组被解除分配? ,如果是这样我怎么办呢?我认为它应该留在那里,因为它是全球应用程序环境的一部分。
附加信息:此活动是启动活动。
答案 0 :(得分:0)
您不应该将元素[1]与null进行比较,因为整个数组可能为null,尝试访问空数组的一部分将导致异常
答案 1 :(得分:0)
评论时间过长 - 但我猜这可能是一个有用的答案:
我的问题是我有一大堆数据只在初始屏幕中初始化一次。我通过在我的应用程序中设置一个布尔标志来绕过它,我可以使用它检查以确定我的应用程序对象是否填充了数据。在我所有活动的onCreate或onResume中,我首先检查这个标志,如果它是假的,那么我知道我有一个duff应用程序对象所以我只是完成了所有的活动,直到我在我的活动堆栈开始然后启动我的启动画面意图 - 对用户来说,感觉就像重启一样。没有更多神秘的无效指针!我确信有一个更优雅的解决方案(我相信我们应该在onPause中将数据保存到磁盘 - 而不仅仅是依赖于活着的应用程序对象)。
为我工作 - 希望这可以帮助别人。