[ https://issues.apache.org/jira/browse/CB-6837?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14157087#comment-14157087 ]
Martin Gonzalez edited comment on CB-6837 at 10/2/14 8:10 PM: -------------------------------------------------------------- The problem found is that at the precise moment that you hit back, if a dialog tries to popup it throws that exception described in this issue description. I realized that the best way to prevent for that to happen it would be close the dialog during onDestroy(). Once there, I stored them all, and destroy them during the event, making a clean up. Main goal is prevent that window leaked, and once there make the cleanup. Any thoughts? was (Author: martin.c.glez.glez): The problem found is that at the precise moment that you hit back, if a dialog tries to popup it throws that exception describe in this issue description. I realized that the best way to prevent for that to happen it would be close the dialog during onDestroy(). Once there, I stored them all, and destroy them during the event, making a clean up. Main goal is prevent that window leaked, and once there make the cleanup. Any thoughts? > Hitting Back button while alert being rendered causes leaked window > ------------------------------------------------------------------- > > Key: CB-6837 > URL: https://issues.apache.org/jira/browse/CB-6837 > Project: Apache Cordova > Issue Type: Bug > Components: Android > Affects Versions: 3.5.0 > Reporter: Marcel Kinard > Assignee: Martin Gonzalez > Attachments: index.html > > > On master and using dialogs plugin. Using a trivial app that has a button to > create an alert dialog after 500ms timeout. If the Back button is hit at > approximately the same time as the timer expires and the alert is to be > shown, the following exception appears in logcat: > D/CordovaWebView( 8178): The current URL is: > file:///android_asset/www/index.html > D/CordovaWebView( 8178): The URL at item 0 is: > file:///android_asset/www/index.html > D/dalvikvm( 513): GC_FOR_ALLOC freed 306K, 13% free 14164K/16240K, paused > 54ms, total 55ms > D/CordovaActivity( 8178): Paused the application! > D/CordovaWebView( 8178): Handle the pause > W/IInputConnectionWrapper( 8178): showStatusIcon on inactive InputConnection > W/InputMethodManagerService( 513): Starting input on non-focused client > com.android.internal.view.IInputMethodClient$Stub$Proxy@42396598 (uid=10050 > pid=8178) > D/CordovaActivity( 8178): CordovaActivity.onDestroy() > D/CordovaWebView( 8178): >>> loadUrlNow() > E/WindowManager( 8178): > E/WindowManager( 8178): android.view.WindowLeaked: Activity > com.example.Example has leaked window > com.android.internal.policy.impl.PhoneWindow$DecorView{41f0d8b8 V.E..... > R.....I. 0,0-465,256} that was originally added here > E/WindowManager( 8178): at > android.view.ViewRootImpl.<init>(ViewRootImpl.java:348) > E/WindowManager( 8178): at > android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:248) > E/WindowManager( 8178): at > android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69) > E/WindowManager( 8178): at android.app.Dialog.show(Dialog.java:286) > E/WindowManager( 8178): at > android.app.AlertDialog$Builder.show(AlertDialog.java:951) > E/WindowManager( 8178): at > org.apache.cordova.CordovaChromeClient.onJsAlert(CordovaChromeClient.java:143) > E/WindowManager( 8178): at > com.android.webview.chromium.WebViewContentsClientAdapter.handleJsAlert(WebViewContentsClientAdapter.java:606) > E/WindowManager( 8178): at > com.android.org.chromium.android_webview.AwContentsClientBridge.handleJsAlert(AwContentsClientBridge.java:73) > E/WindowManager( 8178): at > com.android.org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(Native > Method) > E/WindowManager( 8178): at > com.android.org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:27) > E/WindowManager( 8178): at > android.os.Handler.dispatchMessage(Handler.java:102) > E/WindowManager( 8178): at android.os.Looper.loop(Looper.java:136) > E/WindowManager( 8178): at > android.app.ActivityThread.main(ActivityThread.java:5017) > E/WindowManager( 8178): at java.lang.reflect.Method.invokeNative(Native > Method) > E/WindowManager( 8178): at > java.lang.reflect.Method.invoke(Method.java:515) > E/WindowManager( 8178): at > com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) > E/WindowManager( 8178): at > com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) > E/WindowManager( 8178): at dalvik.system.NativeStart.main(Native Method) > D/CordovaWebViewClient( 8178): onPageFinished(about:blank) > D/CordovaActivity( 8178): onMessage(onPageFinished,about:blank) > D/CordovaActivity( 8178): onMessage(exit,null) > It looks like there is an attempt to show the alert dialog after the > activity's onDestroy() method has been called. > When resuming the app by clicking on it's icon in the home screen or using > the Multitask button, the webview doesn't render completely, I see only a > black screen with the usual status bar. The app must be killed, and then it > works fine after a restart. It appears that there is a pretty small time > window during the timeout in which this can be reproduced, something on the > order of 200ms. -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@cordova.apache.org For additional commands, e-mail: issues-h...@cordova.apache.org