Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(android): prevent showing base activity #13889

Open
wants to merge 17 commits into
base: master
Choose a base branch
from

Conversation

m1ga
Copy link
Contributor

@m1ga m1ga commented Jul 28, 2023

fixes #13791

var win1 = Ti.UI.createWindow({
	backgroundColor: "green"
})
win1.addEventListener("click", function() {
	var win2 = Ti.UI.createWindow({
		backgroundColor: "red"
	})
	win2.open();
})
win1.open();

Steps to reproduce

  • open the app (green window)
  • click to open the second window (red)
  • close the red window and close the green window right away
  • you will see the root activity

more infos in the ticket

Update

I've changed the PR a bit. Instead of checking the stuff when closing the window I'll do it when adding a new activity. If we have more then one and the first one is still TiRootActivity (the launch screen) then it will be removed. This also helps you add <application android:enableOnBackInvokedCallback="true"/> in your tiapp.xml to enable Androids new predictive back feature. This way it will show the dashboard instead of the icon!

NOTE:

It will only run in a production build. It looks like LiveView needs it so it can restart the app without loading the whole app again.

If you test it make sure to build a dist-playstore app!

@m1ga m1ga marked this pull request as draft January 28, 2024 19:07
@m1ga m1ga marked this pull request as ready for review May 23, 2024 10:45
@m1ga m1ga added the bug label May 23, 2024
@hansemannn
Copy link
Collaborator

@m1ga We are currently testing this, but needed some other adjustments done by @prashantsaini1 to support Gradle 8 properly.

@@ -190,6 +190,24 @@ public static boolean firstOnActivityStack()
public static void addToActivityStack(Activity activity)
{
if (activity != null) {
if (!isDevelopment && activityStack.size() > 0) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel like this hack might be a symthome of not using the best possible solution. According to both Apple and Google, apps should have the same core-functionality between dev and prod

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I only need it for Liveview as that needs the first activity not to be closed to restart the app. But we don't have a way to check for Liveview, that's why I've used dev/prod to do the check

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Alright, then @prashantsaini1 will know what to do. It's still odd to have this check, but looking at Liveview it may make sense.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it works without it but Liveview will look a bit different as you'll see the home screen and then it will launch again. I don't like the dev/prod difference either 😄 Let's see what Prashant will find 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Android: closing two windows quickly won't close app
2 participants