【发布时间】:2014-09-08 09:44:50
【问题描述】:
我有一个活动 - MainActivity,我在 onCreate(...) 方法中初始化成员变量。然后在 onStart() 和 onStop() 方法中使用此变量。
很简单吧?现在的问题是,从我的用户那里,我开始收到 NullPointerException 崩溃报告,这发生在 onStop() 方法中。
我一直在广泛寻找原因,并且我知道当 android 决定释放内存时静态变量可能会变为空,但是我找不到在 onCreate() 中初始化的成员变量的情况。 代码如下:
public class MainActivity extends ActionBarActivity implements ActionBar.TabListener, SharedPreferences.OnSharedPreferenceChangeListener {
private MySvc mySvc;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mySvc = DI.i().getMySvc();
...
}
@Override
protected void onStart() {
super.onStart();
mySvc.start();
}
...
@Override
protected void onStop() {
super.onStop();
//here I get NPE
mySvc.stop();
}
}
}
为了让事情变得更加神秘,我开始仅从某些版本的应用程序中获取此崩溃报告,但是旧版本在 onStart() 和 onStop() 中具有相同的行为。
如有任何提示,我将不胜感激。
编辑:
- DI.i().getMySvc();从不返回 null,它根据单例模式完成。
- MySvc 是 POJO,在 DI 类中实例化
【问题讨论】:
-
看看这个我想这就是你搜索的内容stackoverflow.com/questions/151777/…
-
DI.i().getMySvc();是否有可能返回null? -
@subspider 该链接如何应用于这个问题?
-
检查
mySvc = DI.i().getMySvc();是否不为空。 -
DI.i().getMySvc() 永远不会返回 null。我在我的问题中犯了一个错误,我在 onStop() 中得到 NPE 而不是在 onStart() 中。在 onStart() 中,一切都像魅力一样。
标签: android android-activity nullpointerexception instance-variables android-lifecycle