Android - 为什么活动上下文在一种设备类型上突然变为空

时间:2012-02-21 03:38:32

标签: android null android-context

我一直在研究一款突然无法在我的droid x2测试设备上运行的应用程序,但在其他所有设备上工作得很好。我已经尝试打开和关闭手机,删除应用程序的现有副本并重新安装,最后我实际上去了工厂重置,但是为了什么原因主要活动去实例化我使用的上下文即将到来如果它只能在一台设备上执行此操作,而不是其他设备。

我经历了检查我的清单标志,我很确定不是它。

当我调试并逐步执行应用程序时,我注意到它从oncreate进入onResume并且我在某个方法中使用上下文它出现了null但只有在我运行它时机器人x2。它不会在任何其他设备上这样做。

最奇怪的是,这在今天之前从未发生过,我在大约3天内没有对代码进行任何更改。事实上,在过去的几个小时里它只是一个问题。

这是失败时的logcat:

02-20 19:30:12.354: E/AndroidRuntime(21483): java.lang.RuntimeException: Unable to resume activity {graffit.main/graffit.main.MyView}: java.lang.NullPointerException
02-20 19:30:12.354: E/AndroidRuntime(21483):    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2208)
02-20 19:30:12.354: E/AndroidRuntime(21483):    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2228)
02-20 19:30:12.354: E/AndroidRuntime(21483):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1721)
02-20 19:30:12.354: E/AndroidRuntime(21483):    at android.app.ActivityThread.access$1500(ActivityThread.java:124)
02-20 19:30:12.354: E/AndroidRuntime(21483):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:968)
02-20 19:30:12.354: E/AndroidRuntime(21483):    at  android.os.Handler.dispatchMessage(Handler.java:99)
02-20 19:30:12.354: E/AndroidRuntime(21483):    at android.os.Looper.loop(Looper.java:130)
02-20 19:30:12.354: E/AndroidRuntime(21483):    at android.app.ActivityThread.main(ActivityThread.java:3806)
02-20 19:30:12.354: E/AndroidRuntime(21483):    at java.lang.reflect.Method.invokeNative(Native Method)
02-20 19:30:12.354: E/AndroidRuntime(21483):    at java.lang.reflect.Method.invoke(Method.java:507)
02-20 19:30:12.354: E/AndroidRuntime(21483):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
02-20 19:30:12.354: E/AndroidRuntime(21483):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-20 19:30:12.354: E/AndroidRuntime(21483):    at dalvik.system.NativeStart.main(Native Method)
02-20 19:30:12.354: E/AndroidRuntime(21483): Caused by: java.lang.NullPointerException
02-20 19:30:12.354: E/AndroidRuntime(21483):    at graffit.main.MyView.onResume(MyView.java:728)
02-20 19:30:12.354: E/AndroidRuntime(21483):    at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1150)
02-20 19:30:12.354: E/AndroidRuntime(21483):    at android.app.Activity.performResume(Activity.java:3912)
02-20 19:30:12.354: E/AndroidRuntime(21483):    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2191)
02-20 19:30:12.354: E/AndroidRuntime(21483):    ... 12 more

当我登录并且MyView活动应该打开但上下文为空时发生崩溃。我知道因为我调试了这个方法并且在我的代码中使用上下文我看到它是null。

@Override
protected void onResume() {
    super.onResume();
    try{
    System.gc();
    myContext.startGpsListener();
    //Log.w("curLoc is from"+myContext.curLoc.getProvider(),"thats it");
    }catch(Exception e){
        e.printStackTrace();
    }
    if(getIntent().hasExtra("UID")){
        curr_uid = getIntent().getStringExtra("UID");
        curr_rid = getIntent().getStringExtra("RID");
        curr_profimg = getIntent().getStringExtra("imagepath");
        curr_usrname = getIntent().getStringExtra("UsrName");
        myContext.setUserInfo(curr_uid, curr_usrname);<-------------failure here
    }

2 个答案:

答案 0 :(得分:1)

你在哪里初始化myContext?因为你在活动中,所以调用startGpsListener();直接并且如果可能,将System.gc()作为方法

中的最后一个语句

答案 1 :(得分:0)

SO BIZARRE ....我的代码没有任何变化,应用程序终于重新开始工作了。可能是在后台运行的一些Verizon间谍软件干扰了我的应用程序。