Android BroadcastReceiver и TabActivity - PullRequest
       12

Android BroadcastReceiver и TabActivity

0 голосов
/ 03 ноября 2011

У меня есть TabActivity, на котором размещаются другие действия, на вкладке у меня есть широковещательный приемник, который получает данные из класса веб-службы (не службы Android). Класс веб-сервиса выполняет http-запрос в асинхронной задаче и возвращает данные, отправляя широковещательное сообщение на tabhost.

Если я блокирую экран на книжной ориентации, данные восстанавливаются без проблем, если я разрешаю экран в режиме по умолчанию (книжная и альбомная), при первом запуске приложение получает данные, но после нескольких изменений ориентации экрана, приложение падает, и я получаю следующую ошибку:

11-03 17:25:48.542: ERROR/AndroidRuntime(16486): FATAL EXCEPTION: main
    java.lang.RuntimeException: Error receiving broadcast Intent { act=x.tableManager.tableData.success } in x.SolarObjTableMain$TableViewDataReceiver@405c5d88
    at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:756)
    at android.os.Handler.handleCallback(Handler.java:587)
    at android.os.Handler.dispatchMessage(Handler.java:92)
    at android.os.Looper.loop(Looper.java:143)
    at android.app.ActivityThread.main(ActivityThread.java:4196)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:507)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
    at dalvik.system.NativeStart.main(Native Method)
    Caused by: java.lang.NullPointerException
    at x.SolarObjTableMain.getPaddedData(SolarObjTableMain.java:530)
    at x.SolarObjTableMain.addTableToList(SolarObjTableMain.java:983)
    at x.SolarObjTableMain.access$900(SolarObjTableMain.java:35)
    at x.SolarObjTableMain$TableViewDataReceiver.onReceive(SolarObjTableMain.java:1051)
    at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:739)
    ... 9 more

После первого сбоя приложение продолжает падать при первом запуске, мне не нужно трясти телефон или поворачивать его, чтобы воспроизвести ошибку ...

После некоторых точек останова кажется, что получатель получает некоторые данные, но после случайного количества полученных данных все объекты в операции обнуляются.

Обратите внимание, что я регистрирую получателя в onCreate () и onResume () и отменяю его регистрацию в onPause ().

Что я делаю не так? Спасибо!

1 Ответ

0 голосов
/ 03 ноября 2011

Вы регистрируетесь в onCreate И onResume? Просто сделайте на резюме.

Кроме того, ваша жизнь будет проще, если вы добавите это в объявление активности в AndroidManifest.xml

Android: configChanges = "ориентация | клавиатура | keyboardHidden"

Это предотвратит полный перезапуск вашей активности при изменении ориентации (а также при событиях на клавиатуре).

Я не уверен, почему вы получаете нули, но я думаю, что если вы измените эти две вещи, у вас все будет хорошо. Если нет, нам нужен код для просмотра.

...