Android - почему контекст активности внезапно становится нулевым на одном типе устройства - PullRequest
0 голосов
/ 21 февраля 2012

Я работал над приложением, которое внезапно перестало работать на моем тестовом устройстве droid x2, но отлично работает во всем остальном. Я попытался включить и выключить телефон, удалить существующую копию приложения и переустановить, и, наконец, я действительно пошел и сделал сброс настроек к заводским значениям, но по какой-либо причине, когда основное действие идет, чтобы создать экземпляр контекста, который я использую, приходит up null, однако, это происходит только на одном устройстве, а на других нет.

Я прошел и проверил свои флаги манифеста, и я почти уверен, что это не так.

Когда я отлаживал и проходил по приложению, я заметил, что с oncreate оно идет прямо до onResume, и где я использую контекст для метода, оно становится пустым, но только когда я запускаю его на droid 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 ]

1 голос
/ 21 февраля 2012

где вы инициализируете myContext? так как вы находитесь в деятельности, вызовите startGpsListener (); напрямую и, если возможно, вызовите System.gc () как последний оператор в методе

0 голосов
/ 21 февраля 2012

ТАК странно .... без каких-либо изменений в моем коде приложение наконец-то снова заработало. Возможно, какая-то шпионская программа Verizon работает в фоновом режиме и мешает моему приложению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...