[
https://issues.apache.org/jira/browse/CB-6837?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14156983#comment-14156983
]
Ian Clelland commented on CB-6837:
----------------------------------
I build a small sample like this:
{code:title=index.html}
<a href="index2.html">Page 2</a>
{code}
{code:title=index2.html}
<script>
for (var x=0; x < 10; ++x) {
alert("This is number " + x);
}
</script>
{code}
The normal flow is to click "Page 2", and then dismiss all 10 dialogs, and the
hit the back button. That seems to work correctly.
If I instead start hitting the back button while a dialog is displayed, it
seems to quickly overlay the *next* dialog in the sequence, and the next one.
Eventually, they're all displayed, stacked. After that, hitting back dismisses
them one at a time, until they're all gone, and *then* hitting back one more
time goes back to page 1.
(This is on the L preview; I'l try it on 4.4 next to see if it's new behaviour)
> 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: [email protected]
For additional commands, e-mail: [email protected]