Open Larhei opened 2 months ago
Can you try to create a repro or maybe add some context about your shell structure?
I will try my best... but from my research it looks like the popup gets opened to early because in the middle of creating the view. Found some advice to move the popuprelated code to OnViewCreated... But did not found time to test it..
@PureWeen
Got it. Source is in the repro
When testing it with
adb shell monkey -p com.companyname.searchhandlercrash 5000
I got
`// CRASH: com.companyname.searchhandlercrash (pid 17040) // Short Msg: android.view.WindowManager$BadTokenException // Long Msg: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running? // Build Label: google/sdk_gphone64_x86_64/emu64xa:14/UPB5.230623.003/10615560:userdebug/dev-keys // Build Changelist: 10615560 // Build Time: 1691193509000 // android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running? // at android.view.ViewRootImpl.setView(ViewRootImpl.java:1395) // at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:411) // at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:150) // at android.widget.PopupWindow.invokePopup(PopupWindow.java:1580) // at android.widget.PopupWindow.showAsDropDown(PopupWindow.java:1427) // at android.widget.ListPopupWindow.show(ListPopupWindow.java:722) // at android.widget.AutoCompleteTextView.showDropDown(AutoCompleteTextView.java:1332) // at crc640ec207abc449b2ca.ShellSearchView.n_afterTextChanged(Native Method) // at crc640ec207abc449b2ca.ShellSearchView.afterTextChanged(ShellSearchView.java:98) // at android.widget.TextView.sendAfterTextChanged(TextView.java:12365) // at android.widget.TextView.setText(TextView.java:7196) // at android.widget.TextView.setText(TextView.java:6994) // at android.widget.EditText.setText(EditText.java:149) // at android.widget.TextView.setText(TextView.java:6946) // at crc640ec207abc449b2ca.ShellSectionRenderer.n_onCreateView(Native Method) // at crc640ec207abc449b2ca.ShellSectionRenderer.onCreateView(ShellSectionRenderer.java:44) // at androidx.fragment.app.Fragment.performCreateView(Fragment.java:3114) // at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:557) // at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:272) // at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1943) // at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1845) // at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1782) // at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3042) // at androidx.fragment.app.FragmentManager.dispatchViewCreated(FragmentManager.java:2945) // at androidx.fragment.app.Fragment.performViewCreated(Fragment.java:3148) // at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:588) // at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:272) // at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1943) // at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1845) // at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1782) // at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3042) // at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2952) // at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:263) // at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:350) // at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:251) // at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1582) // at android.app.Activity.performStart(Activity.java:8628) // at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3807) // at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:225) // at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:205) // at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:177) // at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:98) // at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2443) // at android.os.Handler.dispatchMessage(Handler.java:106) // at android.os.Looper.loopOnce(Looper.java:205) // at android.os.Looper.loop(Looper.java:294) // at android.app.ActivityThread.main(ActivityThread.java:8177) // at java.lang.reflect.Method.invoke(Native Method) // at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552) // at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971) // ** Monkey aborted due to error. Events injected: 205
** System appears to have crashed at event 205 of 5000 using seed 1710980169422`
@PureWeen
ok... also found a way to reproduce without monkey.
The App should crash. So it´s Android lifecycle related.
Verified this issue with Visual Studio 17.10.0 Preview 2. Can repro on Android platform with sample project. If I didn't Enable "Don't keep activities" in developer options, the issue will not occur.
Description
We are getting stability issues from Pre-Launch on Android that we are not able to reproduce when doing manual testing.
Exception android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running? at android.view.ViewRootImpl.setView (ViewRootImpl.java:1189) at android.view.WindowManagerGlobal.addView (WindowManagerGlobal.java:400) at android.view.WindowManagerImpl.addView (WindowManagerImpl.java:139) at android.widget.PopupWindow.invokePopup (PopupWindow.java:1576) at android.widget.PopupWindow.showAsDropDown (PopupWindow.java:1423) at android.widget.ListPopupWindow.show (ListPopupWindow.java:722) at android.widget.AutoCompleteTextView.showDropDown (AutoCompleteTextView.java:1317) at crc640ec207abc449b2ca.ShellSearchView.n_afterTextChanged at crc640ec207abc449b2ca.ShellSearchView.afterTextChanged (ShellSearchView.java:98) at android.widget.TextView.sendAfterTextChanged (TextView.java:10805) at android.widget.TextView.setText (TextView.java:6407) at android.widget.TextView.setText (TextView.java:6227) at android.widget.EditText.setText (EditText.java:121) at android.widget.TextView.setText (TextView.java:6179) at crc640ec207abc449b2ca.ShellSectionRenderer.n_onCreateView at crc640ec207abc449b2ca.ShellSectionRenderer.onCreateView (ShellSectionRenderer.java:44) at androidx.fragment.app.Fragment.performCreateView (Fragment.java:3114) at androidx.fragment.app.FragmentStateManager.createView (FragmentStateManager.java:557) at androidx.fragment.app.FragmentStateManager.moveToExpectedState (FragmentStateManager.java:272) at androidx.fragment.app.FragmentManager.executeOpsTogether (FragmentManager.java:1943) at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute (FragmentManager.java:1845) at androidx.fragment.app.FragmentManager.execPendingActions (FragmentManager.java:1782) at androidx.fragment.app.FragmentManager.dispatchStateChange (FragmentManager.java:3042) at androidx.fragment.app.FragmentManager.dispatchViewCreated (FragmentManager.java:2945) at androidx.fragment.app.Fragment.performViewCreated (Fragment.java:3148) at androidx.fragment.app.FragmentStateManager.createView (FragmentStateManager.java:588) at androidx.fragment.app.FragmentStateManager.moveToExpectedState (FragmentStateManager.java:272) at androidx.fragment.app.FragmentManager.executeOpsTogether (FragmentManager.java:1943) at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute (FragmentManager.java:1845) at androidx.fragment.app.FragmentManager.execPendingActions (FragmentManager.java:1782) at androidx.fragment.app.FragmentManager.dispatchStateChange (FragmentManager.java:3042) at androidx.fragment.app.FragmentManager.dispatchActivityCreated (FragmentManager.java:2952) at androidx.fragment.app.FragmentController.dispatchActivityCreated (FragmentController.java:263) at androidx.fragment.app.FragmentActivity.onStart (FragmentActivity.java:350) at androidx.appcompat.app.AppCompatActivity.onStart (AppCompatActivity.java:251) at android.app.Instrumentation.callActivityOnStart (Instrumentation.java:1467) at androidx.test.runner.MonitoringInstrumentation.callActivityOnStart (MonitoringInstrumentation.java:2) at android.app.Activity.performStart (Activity.java:8099) at android.app.ActivityThread.handleStartActivity (ActivityThread.java:3732) at android.app.servertransaction.TransactionExecutor.performLifecycleSequence (TransactionExecutor.java:221) at android.app.servertransaction.TransactionExecutor.cycleToPath (TransactionExecutor.java:201) at android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:173) at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:97) at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2253) at android.os.Handler.dispatchMessage (Handler.java:106) at android.os.Looper.loopOnce (Looper.java:201) at android.os.Looper.loop (Looper.java:288) at android.app.ActivityThread.main (ActivityThread.java:7870) at java.lang.reflect.Method.invoke at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:548) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1003)
We have a Shell with Flyout and a Page with a Searchhandler. Short the before the crash it looks to me the robot is clicking the burger menu twice.
Sorry for not providing a repro.
Steps to Reproduce
No response
Link to public reproduction project repository
Source
Version with bug
8.0.6 SR1
Is this a regression from previous behavior?
No, this is something new
Last version that worked well
Unknown/Other
Affected platforms
Android
Affected platform versions
Android 30, 31, 32, 33, 34
Did you find any workaround?
Not without overwirting the complete SearchHandlerAppearanceTracker
Relevant log output