9

Artık projemi API 23'e yükselttim ve daha önce her zaman çalışan kodda hata alıyorum. Kilitlenme, aşağıda Spinner dinleyicisinde dialog.dismiss()'u aradığımda gerçekleşir. Bu alanda dismiss numaralı telefonu aramazsam çökmez.API 23'te İletişim Kutusunu kapatırken DeadObjectException

void showWeekViewOptionsDialog() { 
    AlertDialog.Builder b = new AlertDialog.Builder(getActivity()); 
    final View view = getActivity().getLayoutInflater().inflate(R.layout.dialog_weekview_options, null); 

    final MaterialSpinnerCallsSameItemSelected spinner = (MaterialSpinnerCallsSameItemSelected) view.findViewById(R.id.spinner_weekview_days); 
    ArrayAdapter<Integer> dayListAdapter; 

    ArrayList<Integer> dayList = new ArrayList<Integer>(); 
    dayList.add(2); 
    dayList.add(3); 

    dayListAdapter = new ArrayAdapter<Integer>(getActivity(), R.layout.my_spinner_item, dayList); 
    dayListAdapter.setDropDownViewResource(R.layout.my_spinner_dropdown_item); 
    spinner.setAdapter(dayListAdapter); 

    spinner.setSelection(dayListAdapter.getPosition(mWeekViewType)); 

    b.setView(view); 
    final AlertDialog dialog = b.create(); 
    spinner.setOnItemSelectedEvenIfUnchangedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { 
      dialog.dismiss(); // crashes here! 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> adapterView) { 
     } 
    }); 
    dialog.show(); 
} 

Aşağıda logcat çıkışı var. Abandoned Buffer Queue veya DeadObjectException tarafından ne anlama geldiğini bilmiyorum. Araştırmamdan, bir nesnenin ölü bir süreçten referans alındığı anlaşılıyor mu? Bunun neden böyle olduğunu veya neden sadece Marshmallow'da meydana geldiğini anlamıyorum. Herhangi bir yardım takdir edilir. Teşekkürler! yorumlarda par konuşma gibi

01-06 17:53:45.791 4436-4485/com.NSouthDomain.NSouthApplication E/Surface: getSlotFromBufferLocked: unknown buffer: 0x9c359200 
01-06 17:53:46.066 1278-1303/system_process W/WindowManager: Force-removing child win Window{df5d861 u0 PopupWindow:ac39394} from container Window{d72786b u0 com.NSouthDomain.NSouthApplication/com.NSouthDomain.NSouthApplication.Activity_Main} 
01-06 17:53:46.087 941-1963/? E/BufferQueueProducer: [PopupWindow:ac39394] dequeueBuffer: BufferQueue has been abandoned 
01-06 17:53:46.089 941-941/? W/SurfaceFlinger: couldn't log to binary event log: overflow. 
01-06 17:53:46.090 4436-4485/com.NSouthDomain.NSouthApplication E/EGL_emulation: tid 4485: swapBuffers(322): error 0x3003 (EGL_BAD_ALLOC) 
01-06 17:53:46.090 4436-4485/com.NSouthDomain.NSouthApplication A/OpenGLRenderer: Encountered EGL error 12291 EGL_BAD_ALLOC during rendering 
01-06 17:53:46.090 4436-4485/com.NSouthDomain.NSouthApplication A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 4485 (RenderThread) 
01-06 17:53:46.208 949-949/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** 
01-06 17:53:46.208 949-949/? A/DEBUG: Build fingerprint: 'Android/sdk_google_phone_x86/generic_x86:6.0/MASTER/2497369:userdebug/test-keys' 
01-06 17:53:46.208 949-949/? A/DEBUG: Revision: '0' 
01-06 17:53:46.208 949-949/? A/DEBUG: ABI: 'x86' 
01-06 17:53:46.208 949-949/? A/DEBUG: pid: 4436, tid: 4485, name: RenderThread >>> com.NSouthDomain.NSouthApplication <<< 
01-06 17:53:46.208 949-949/? A/DEBUG: signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr -------- 
01-06 17:53:46.210 949-949/? A/DEBUG: Abort message: 'Encountered EGL error 12291 EGL_BAD_ALLOC during rendering' 
01-06 17:53:46.211 949-949/? A/DEBUG:  eax 00000000 ebx 00001154 ecx 00001185 edx 00000006 
01-06 17:53:46.211 949-949/? A/DEBUG:  esi a2cbf980 edi 0000000b 
01-06 17:53:46.211 949-949/? A/DEBUG:  xcs 00000073 xds 0000007b xes 0000007b xfs 00000077 xss 0000007b 
01-06 17:53:46.211 949-949/? A/DEBUG:  eip b7304696 ebp 00001185 esp a2cbf150 flags 00200202 
01-06 17:53:46.211 949-949/? A/DEBUG:  #00 pc 00083696 /system/lib/libc.so (tgkill+22) 
01-06 17:53:46.212 949-949/? A/DEBUG:  #01 pc 000815e8 /system/lib/libc.so (pthread_kill+70) 
01-06 17:53:46.212 949-949/? A/DEBUG:  #02 pc 00027205 /system/lib/libc.so (raise+36) 
01-06 17:53:46.212 949-949/? A/DEBUG:  #03 pc 000209e4 /system/lib/libc.so (abort+80) 
01-06 17:53:46.212 949-949/? A/DEBUG:  #04 pc 0000cbc3 /system/lib/libcutils.so (__android_log_assert+128) 
01-06 17:53:46.212 949-949/? A/DEBUG:  #05 pc 00023759 /system/lib/libhwui.so 
01-06 17:53:46.212 949-949/? A/DEBUG:  #06 pc 0001e866 /system/lib/libhwui.so 
01-06 17:53:46.212 949-949/? A/DEBUG:  #07 pc 000216ef /system/lib/libhwui.so 
01-06 17:53:46.212 949-949/? A/DEBUG:  #08 pc 00027137 /system/lib/libhwui.so (android::uirenderer::renderthread::RenderThread::threadLoop()+151) 
01-06 17:53:46.212 949-949/? A/DEBUG:  #09 pc 00014aac /system/lib/libutils.so (android::Thread::_threadLoop(void*)+418) 
01-06 17:53:46.212 949-949/? A/DEBUG:  #10 pc 0006bfee /system/lib/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+98) 
01-06 17:53:46.212 949-949/? A/DEBUG:  #11 pc 000141cf /system/lib/libutils.so (thread_data_t::trampoline(thread_data_t const*)+122) 
01-06 17:53:46.212 949-949/? A/DEBUG:  #12 pc 00080a93 /system/lib/libc.so (__pthread_start(void*)+56) 
01-06 17:53:46.212 949-949/? A/DEBUG:  #13 pc 00021952 /system/lib/libc.so (__start_thread+25) 
01-06 17:53:46.212 949-949/? A/DEBUG:  #14 pc 000170b6 /system/lib/libc.so (__bionic_clone+70) 
01-06 17:53:46.282 949-949/? E/DEBUG: AM write failed: Broken pipe 
01-06 17:53:46.282 1278-1298/system_process I/BootReceiver: Copying /data/tombstones/tombstone_09 to DropBox (SYSTEM_TOMBSTONE) 
01-06 17:53:46.303 1278-8703/system_process W/ActivityManager: Force finishing activity com.NSouthDomain.NSouthApplication/.Activity_Main 
01-06 17:53:46.309 955-955/? I/Zygote: Process 4436 exited due to signal (6) 
01-06 17:53:46.319 1278-1320/system_process W/InputDispatcher: channel 'bbdfcc6 com.NSouthDomain.NSouthApplication/com.NSouthDomain.NSouthApplication.Activity_Main (server)' ~ Consumer closed input channel or an error occurred. events=0x9 
01-06 17:53:46.319 1278-1320/system_process E/InputDispatcher: channel 'bbdfcc6 com.NSouthDomain.NSouthApplication/com.NSouthDomain.NSouthApplication.Activity_Main (server)' ~ Channel is unrecoverably broken and will be disposed! 
01-06 17:53:46.323 1278-1820/system_process D/GraphicsStats: Buffer count: 3 
01-06 17:53:46.391 941-941/? E/EGL_emulation: tid 941: eglCreateSyncKHR(1294): error 0x3004 (EGL_BAD_ATTRIBUTE) 
01-06 17:53:46.437 1278-1820/system_process I/WindowState: WIN DEATH: Window{bbdfcc6 u0 com.NSouthDomain.NSouthApplication/com.NSouthDomain.NSouthApplication.Activity_Main} 
01-06 17:53:46.437 1278-1820/system_process W/InputDispatcher: Attempted to unregister already unregistered input channel 'bbdfcc6 com.NSouthDomain.NSouthApplication/com.NSouthDomain.NSouthApplication.Activity_Main (server)' 
01-06 17:53:46.437 1278-8703/system_process W/ActivityManager: Exception thrown during pause 
                   android.os.DeadObjectException 
                    at android.os.BinderProxy.transactNative(Native Method) 
                    at android.os.BinderProxy.transact(Binder.java:503) 
                    at android.app.ApplicationThreadProxy.schedulePauseActivity(ApplicationThreadNative.java:727) 
                    at com.android.server.am.ActivityStack.startPausingLocked(ActivityStack.java:867) 
                    at com.android.server.am.ActivityStack.finishActivityLocked(ActivityStack.java:2907) 
                    at com.android.server.am.ActivityStack.finishTopRunningActivityLocked(ActivityStack.java:2763) 
                    at com.android.server.am.ActivityStackSupervisor.finishTopRunningActivityLocked(ActivityStackSupervisor.java:2755) 
                    at com.android.server.am.ActivityManagerService.handleAppCrashLocked(ActivityManagerService.java:11971) 
                    at com.android.server.am.ActivityManagerService.makeAppCrashingLocked(ActivityManagerService.java:11867) 
                    at com.android.server.am.ActivityManagerService.crashApplication(ActivityManagerService.java:12556) 
                    at com.android.server.am.ActivityManagerService.handleApplicationCrashInner(ActivityManagerService.java:12063) 
                    at com.android.server.am.NativeCrashListener$NativeCrashReporter.run(NativeCrashListener.java:86) 
01-06 17:53:46.441 1278-1290/system_process I/ActivityManager: Process com.NSouthDomain.NSouthApplication (pid 4436) has died 
01-06 17:53:46.549 1278-3883/system_process I/OpenGLRenderer: Initialized EGL, version 1.4 
01-06 17:53:46.584 1595-1904/com.google.android.googlequicksearchbox W/EGL_emulation: eglSurfaceAttrib not implemented 
01-06 17:53:46.584 1595-1904/com.google.android.googlequicksearchbox W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0xa21efb80, error=EGL_SUCCESS 
01-06 17:53:46.607 1278-3883/system_process W/EGL_emulation: eglSurfaceAttrib not implemented 
01-06 17:53:46.607 1278-3883/system_process W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0x9dba5180, error=EGL_SUCCESS 
01-06 17:53:47.139 1595-1904/com.google.android.googlequicksearchbox W/OpenGLRenderer: Incorrectly called buildLayer on View: em, destroying layer... 
01-06 17:53:47.143 1278-1303/system_process W/WindowAnimator: Failed to dispatch window animation state change. 
                   android.os.DeadObjectException 
                    at android.os.BinderProxy.transactNative(Native Method) 
                    at android.os.BinderProxy.transact(Binder.java:503) 
                    at android.view.IWindow$Stub$Proxy.onAnimationStopped(IWindow.java:534) 
                    at com.android.server.wm.WindowAnimator.updateWindowsLocked(WindowAnimator.java:286) 
                    at com.android.server.wm.WindowAnimator.animateLocked(WindowAnimator.java:678) 
                    at com.android.server.wm.WindowAnimator.-wrap0(WindowAnimator.java) 
                    at com.android.server.wm.WindowAnimator$1.doFrame(WindowAnimator.java:123) 
                    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:856) 
                    at android.view.Choreographer.doCallbacks(Choreographer.java:670) 
                    at android.view.Choreographer.doFrame(Choreographer.java:603) 
                    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844) 
                    at android.os.Handler.handleCallback(Handler.java:739) 
                    at android.os.Handler.dispatchMessage(Handler.java:95) 
                    at android.os.Looper.loop(Looper.java:148) 
                    at android.os.HandlerThread.run(HandlerThread.java:61) 
                    at com.android.server.ServiceThread.run(ServiceThread.java:46) 
01-06 17:53:47.172 1278-1293/system_process I/Choreographer: Skipped 32 frames! The application may be doing too much work on its main thread. 
01-06 17:53:47.192 941-941/? W/SurfaceFlinger: couldn't log to binary event log: overflow. 
+0

İki öneri. Null check on dialog'u ekleyin ve işten atmadan önce görünür olup olmadığını kontrol edin. Ayrıca, OnDestroy ve onPause/onStop'ta da sahip olduğunuz posta kodu. Bu aktiviteyi aramadan önce kapalı/tahrip olmuş gibi görünüyor. – AAnkit

+0

@AnkitAwasthi, ben kontrol ettim ve 'işten çıkarma' dediğimde iletişim kutusu null değil, etkinlik de değil. Diyaloğun 'isShowing()' değeri doğrudur. Ayrıca, etkinlik veya barındırma fragmanında onPause/onStop/onDestroy'un hiçbiri aranmaz. Etkinlik kapalı/tahrip edilmemiştir. Düşünceler? – NSouth

+1

Bu ilginçtir, sadece ne olduğunu kontrol etmek için .dismiss yerine dialog.cancel'i deneyebilirsiniz. Ayrıca sadece orada çökmesini onaylamak için dialog.dismiss önce ve sonra bir günlük satırı ekleyin! – AAnkit

cevap

1

, sen/görevden uygulamayı çökmez iptal söylüyor ama bundan sonra başka bir şeydir.

Kişisel kazasında günlükleri uygulama ana iş parçacığı üzerinde çok fazla çalışma yapıyor olabilir >> diyor

.

Uygulama kodunuzu kontrol edin ve ana iş parçasında uzun süren bir işlem yapmadığınızı doğrulayın.

+0

Uygulamamda, iletişim kutusu kapatıldıktan sonra hiçbir kod çalışmıyor (normalde çalıştırılanı açıkladım). Bunun Spinner 'onItemSelected()' dinleyicisinden çıkmaya çalışarak bir ilgisi olduğunu sanıyorum. – NSouth

+0

Tam olarak şüpheleniyorum da. – AAnkit

+0

@AAnkit Peki ana iş parçacığı üzerinde daha az nasıl çalışılır? – rxlky

1

Doğru bir yanıt değil, ancak bir çözüm buldum. Spinner dinleyicisinden vazgeçmek yerine, bir düğme ekledim. Şimdi kullanıcı spinnerdan seçiyor ve "Apply" (Aktar) seçeneğini tıkladığında. Fazladan bir musluk, ama en azından çalışır. Apply varsayılan diyalog düğmelerinden biri olduğu için, diyaloğu otomatik olarak reddeder ve her şey yolundadır.

Zımba işitme cihazından neden vazgeçtiğini bilen herkes Marshmallow'daysa, ben hepim kulaklarım.

3

Evet, bu, M ... bir hatadır ama bir çözüm buldum. Sadece bir işleyici post yapılmış ~ 500 ms deplay ile çağrı yapıldı

+0

İletişim kutusunu ~ 500ms gecikme ile kapatırsınız? Bu çalışıyor mu? Birisi onaylayabilir mi? – Nifhel

İlgili konular