mirror of
https://github.com/mauiaaron/apple2.git
synced 2024-12-22 20:30:22 +00:00
Avoid android.view.WindowLeaked issue with lingering popups
- Was seeing android.view.WindowLeaked issue on certain devices if the main popup menu was left lingering (which was previously by design ... bad design apparently) - Simplifies lifecycle pause/resume (should be no Android UI showing now) - Emulation resumes automatically, will handle pausing-CPU-on-resume on native side in subsequent commit
This commit is contained in:
parent
ee8660e394
commit
883403e6e8
@ -190,55 +190,45 @@ public class Apple2Activity extends Activity {
|
|||||||
@Override
|
@Override
|
||||||
protected void onResume() {
|
protected void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
|
Log.d(TAG, "onResume()");
|
||||||
mView.onResume();
|
mView.onResume();
|
||||||
|
nativeOnResume();
|
||||||
Apple2MainMenu mainMenu = mView.getMainMenu();
|
|
||||||
|
|
||||||
boolean noMenusShowing = !(
|
|
||||||
(mainMenu != null && mainMenu.isShowing()) ||
|
|
||||||
(mQuitDialog != null && mQuitDialog.isShowing()) ||
|
|
||||||
(mRebootDialog != null && mRebootDialog.isShowing())
|
|
||||||
);
|
|
||||||
|
|
||||||
if (noMenusShowing) {
|
|
||||||
nativeOnResume();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPause() {
|
protected void onPause() {
|
||||||
super.onPause();
|
super.onPause();
|
||||||
|
Log.d(TAG, "onPause()");
|
||||||
mView.onPause();
|
mView.onPause();
|
||||||
|
|
||||||
Apple2MainMenu mainMenu = mView.getMainMenu();
|
|
||||||
if (mainMenu == null) {
|
|
||||||
// wow, early onPause, just quit and restart later
|
|
||||||
nativeOnQuit();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
nativeOnPause();
|
|
||||||
|
|
||||||
if (isSoftKeyboardShowing()) {
|
if (isSoftKeyboardShowing()) {
|
||||||
mView.toggleKeyboard();
|
mView.toggleKeyboard();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Apparently not good to leave popup/dialog windows showing when backgrounding.
|
||||||
|
// Dismiss these popups to avoid android.view.WindowLeaked issues
|
||||||
|
Apple2MainMenu mainMenu = mView.getMainMenu();
|
||||||
|
if (mainMenu != null) {
|
||||||
|
mainMenu.dismiss();
|
||||||
|
}
|
||||||
|
if (mQuitDialog != null && mQuitDialog.isShowing()) {
|
||||||
|
mQuitDialog.dismiss();
|
||||||
|
}
|
||||||
|
if (mRebootDialog != null && mRebootDialog.isShowing()) {
|
||||||
|
mRebootDialog.dismiss();
|
||||||
|
}
|
||||||
|
|
||||||
|
// For good measure, get rid of other menus too
|
||||||
Apple2SettingsMenu settingsMenu = mView.getSettingsMenu();
|
Apple2SettingsMenu settingsMenu = mView.getSettingsMenu();
|
||||||
Apple2DisksMenu disksMenu = mView.getDisksMenu();
|
|
||||||
if (settingsMenu != null) {
|
if (settingsMenu != null) {
|
||||||
settingsMenu.dismissWithoutResume();
|
settingsMenu.dismissWithoutResume();
|
||||||
}
|
}
|
||||||
|
Apple2DisksMenu disksMenu = mView.getDisksMenu();
|
||||||
if (disksMenu != null) {
|
if (disksMenu != null) {
|
||||||
disksMenu.dismissWithoutResume();
|
disksMenu.dismissWithoutResume();
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean someMenuShowing = mainMenu.isShowing() ||
|
nativeOnPause();
|
||||||
(mQuitDialog != null && mQuitDialog.isShowing()) ||
|
|
||||||
(mRebootDialog != null && mRebootDialog.isShowing());
|
|
||||||
if (!someMenuShowing) {
|
|
||||||
// show main menu on pause
|
|
||||||
mView.showMainMenu();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Loading…
Reference in New Issue
Block a user