2013-08-15 3 views
2

Я странная черного экраном проблемы при перезапуске приложения после того, как приложение не используется в течение некоторого времени, сообщенные пользователями в играх магазин консоли разработчика с НРУ с довольно странной трассировкой стеки:черного экрана после перезагрузки

----- pid 2704 at 2013-08-15 09:08:32 ----- 
Cmd line: system_server 

DALVIK THREADS: 
(mutexes: tll=0 tsl=0 tscl=0 ghl=0 hwl=0 hwll=0) 
"main" prio=5 tid=1 NATIVE 
    | group="main" sCount=1 dsCount=0 obj=0x400281b8 self=0xd088 
    | sysTid=2704 nice=0 sched=0/0 cgrp=default handle=-1345006464 
    | schedstat=(29713532638 35237133707 131286) 
    at com.android.server.SystemServer.init1(Native Method) 
    at com.android.server.SystemServer.main(SystemServer.java:918) 
    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(...) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665) 
    at dalvik.system.NativeStart.main(Native Method) 
... 

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

I/ActivityManager(2704): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.example.client.android/.ExampleMainActivity bnds=[125,494][235,632] } from pid 2908 
W/ActivityManager(2704): Receiver during timeout: BroadcastFilter{40b8b180 ReceiverList{40b8b108 32495 com.example.client.android/10107 remote:40b34b28}} 
I/ActivityManager(2704): Skipping duplicate ANR: ProcessRecord{40bfc8c0 32495:com.example.client.android/10107} Broadcast of Intent { act=android.intent.action.SCREEN_OFF flg=0x40000000 } 
W/ActivityManager(2704): Activity idle timeout for HistoryRecord{40578b78 com.example.client.android/.ExampleMainActivity} 

Я уже гугле вокруг и нашел следующие сообщения на StackOverflow, касающиеся этих сообщений:

Activity idle timeout for HistoryRecord?

Activity idle timeout for HistoryRecord

А следующий пост в Google группах:

https://groups.google.com/forum/?fromgroups#!topic/android-developers/TfkPlN5b-ig

Я проверил услуги, если есть что-то тяжелое в onReceive BroadcastReceivers, но ничего не нашел.

Мы используем OnGlobalChangeLayoutListener, который применил View.invalidate(), чтобы обмениваться пробной зоной WebView, что может привести к рисованию. Я удалил его, но все еще проблема.

Возможно, у кого-то есть такая же проблема и у вас есть идея, как ее исправить или изолировать? Я в значительной степени из идей здесь и хотел бы понять, что здесь происходит.

UPDATE

Я забыл упомянуть: если эта черная проблема экрана случилось, что единственный способ получить, что приложение из этого вынужденная остановка процесса подачи заявки. В противном случае строки журнала регистрируются каждый раз, когда я пытаюсь запустить приложение.

UPDATE 2

Более подробное описание того, что происходит в соответствии с просьбой: черный экран происходит очень случайно. Это всегда происходит при запуске приложения, и если случится, что только силовая остановка получит приложение из этого. Кажется, это происходит только после того, как приложение больше не использовалось и, вероятно, было заменено на память. И похоже, что на него повлияли только устройства Android 2.x, хотя я не уверен в этом.

UPDATE 3

Я добавил кнопку, которая вызывает android.os.Process.killProcess(Process.myPid()); и если я называю это снова и снова, я был в состоянии воспроизвести его через какое-то время, запустив приложение и бросить его с помощью кнопка. Через некоторое время (довольно случайный), я получаю это право после отказа от курения с помощью кнопки:

E/JavaBinder(2704): !!! FAILED BINDER TRANSACTION !!! 

заканчивающуюся на:

W/ActivityManager(2704): Activity pause timeout for HistoryRecord{40976dd8 com.example.client.android/.ExampleMainActivity} 

и в следующий раз, когда я перезапустить приложение, я просто получаю черный экран и сообщения журнала, упомянутые выше.Я не смог воспроизвести то же самое с устройством Android 4.1, только с двумя 2.3 устройствами.

Googling вокруг, я нашел это:

http://androiddiscuss.com/1-android-discuss/42614.html

предполагая буфер транзакций связующее несколько исчерпан. Мы используем MediaPlayer, InApp-Billing и Google Cloud Messages, которые используют привязку. Я удалил все из них и все еще попадал в эту ошибку. Может быть, кто-то знает другие скрытые материалы, связанные с связующим, чтобы проверить?

+0

'com.example.client.android' - это ваш пакет и приложение, на которое вы ссылаетесь, это дает вам проблемы? – t0mm13b

+0

Да, я заменил реальное имя пакета com.example в приведенном выше фрагменте файла журнала. Но это приложение вызывает проблемы, и строки регистрируются при запуске приложения. – HefferWolf

+0

Слишком расплывчато, извините, не могу точно сказать, что там произошло, так как для этого отчета ANR на устройстве этого конечного пользователя, где произошла ситуация, там первый фрагмент выше, указывающий на «системный_сервер» для Android, выглядит так, что он разбился их устройство, а не ваше приложение, трассировка стека будет показана во втором фрагменте выше, и до сих пор нет трассировки стека. Таким образом, более вероятный конечный пользователь, который предупредил вас об этом, их телефон сбой из-за возможной перегрузки, сбоя программного обеспечения/оборудования, а не вашего приложения. * Вам нужно опубликовать дополнительную информацию * – t0mm13b

ответ

0

Наконец-то я смог идентифицировать неисправный компонент: Недавно я обновил использованный Admob-SDK с 6.2.1 до 6.4.1, а черный экран (и сообщение Java-Binder) происходит с момента обновления. Возвращаясь к 6.2.1, проблема решена.

Смежные вопросы