cordova-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Martin Gonzalez (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CB-6837) Hitting Back button while alert being rendered causes leaked window
Date Thu, 02 Oct 2014 20:09:34 GMT

    [ https://issues.apache.org/jira/browse/CB-6837?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14157087#comment-14157087
] 

Martin Gonzalez commented on CB-6837:
-------------------------------------

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-unsubscribe@cordova.apache.org
For additional commands, e-mail: issues-help@cordova.apache.org


Mime
View raw message