当代码中出现“”的异常, 之所以出现这个异常往往是我们在handler里面引用了外部类的变量或者实例,我们可以用下面的方法解决:
static class StartHander extends Handler {
WeakReference<Activity> mActivityRef;
StartHander (Activity activity) {
mActivityRef = new WeakReference<Activity>(activity);
}
@Override
public void handleMessage(Message msg) {
if(msg.what == MSG_START_ACTIVITY) {
Activity activity = mActivityRef.get();
activity.startActivity(new Intent(activity, MainActivity.class));
}
}
};这样使用 new StartHander(this).sendEmptyMessageDelayed(MSG_START_ACTIVITY, TIME_START_DELAYED); 就可以了, 很简单吧。
本文介绍了一种解决Android应用中因Handler不当使用导致内存泄漏的方法。通过使用弱引用(WeakReference)来持有外部Activity的引用,避免了内存泄漏的问题。
691

被折叠的 条评论
为什么被折叠?



