Android Question Problem: White screen after StartActivity

RodrigoVitachi

Member
Licensed User
Longtime User
Hi,

I have a problem that is not so usual.
There are a few activities in my app, and a Starter service. From time to time, my service starts an Activity, and that is fine, working 100%.

The problem is when the user opens the "recent apps" Android list and closes my app by sliding it off the list.

The result is: My app is closed, but my service is still running. Then when the Service tries to open the activity, it comes all blank, with 0 responses, doesn't trigger "Activity_Create" nor "Activity_Resume".

Is there any solution for that? Open an activity of my app after it is closed?
IF the answer is NO, then is it possible to detect that the user is closing the app from the Android apps list? Then i could also stop the service.
Or, how can i test if my app is still alive before trying to start the activity again from the service?
The last chance would be to hide the app on the active apps list, then the user could not close it. Is it possible? How?

Waiting for some help.
THANKS!
 
Last edited:

corwin42

Expert
Licensed User
Longtime User
Never seen such a problem.

Without some code seeing what you are exactly doing, no one can guess what happens.

Best thing would be if you can create an example project which shows this error.

Btw: You posted your question friday evening and now it's weekend. Do you really expect that Erel ist working day and night just to answer your questions?
 
Upvote 0

RodrigoVitachi

Member
Licensed User
Longtime User
'STARTER SERVICE
Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
Dim PE As PhoneEvents
End Sub

Sub Service_Create
PE.Initialize("PE")
End Sub

Sub PE_UserPresent (Intent As Intent)
StartActivity(SignUp)
End Sub

I don't believe this is a code issue, simply because it works. The problem is when the user closes the app by dragging it off the active apps list, and this service is still active, then tries to start the activity when the app is already dead. Then i have the blank screen.
 
Upvote 0

RodrigoVitachi

Member
Licensed User
Longtime User
Never seen such a problem.

Without some code seeing what you are exactly doing, no one can guess what happens.

Best thing would be if you can create an example project which shows this error.

Btw: You posted your question friday evening and now it's weekend. Do you really expect that Erel ist working day and night just to answer your questions?

I am not expecting Erel working 24 hours, i was just expecting an active forum. And if aswering here is not to help people, if it is just WORK, then just charge the users and clients like me, i will pay for the help and everybody will be happy. Plus, considering your answer, i am pretty sure that you didn't even read my post, giving a vague answer, and this is not the kind of help that i or anyone else needs. Thank you very much for your expensive time.
 
Upvote 0

RandomCoder

Well-Known Member
Licensed User
Longtime User
I'm sorry but I agree with @corwin42 you have not provided enough information to be able to offer advice that would be of any help. The problem is most likely in the SignUp Activity Create routine as this is what you are calling with your service. Or maybe the PE_UserPresent routine isn't being triggered under the special circumstances you mention. Maybe try placing a log statement in there to make sure it's being called?
 
Upvote 0

RodrigoVitachi

Member
Licensed User
Longtime User
\o/ FTW.
For anyone with the same problem, which means, trying to re-open an activity from a service after your app is killed, here is a workaround.
Add this line to the manifest:
SetActivityAttribute(Main, "android:excludeFromRecents", "true") , where Main is the name of the activity that you want to hide.

This way the user won't kill your app accidentally because it won't show up on the "recent apps" list. This is not the perfect solution, because there are many ways to kill the app then the blank screen will come back, but, you avoid the easiest way to kill it.
 
Last edited:
Upvote 0

RodrigoVitachi

Member
Licensed User
Longtime User
I'm sorry but I agree with @corwin42 you have not provided enough information to be able to offer advice that would be of any help. The problem is most likely in the SignUp Activity Create routine as this is what you are calling with your service. Or maybe the PE_UserPresent routine isn't being triggered under the special circumstances you mention. Maybe try placing a log statement in there to make sure it's being called?

Now i am pretty sure that i could not explain the problem clearly. Like i said, the code works, and just stops working after the user kills the app, which is ok, but when you try to re-open an activity from a service, after your app is dead, then you have a blank activity, with no logs, no responses, no "create" or "resume" triggers, just like i said on the first post. I already solved the problem with a simple workaround, which is not perfect, but will work for a while. Thanks.
 
Last edited:
Upvote 0

RandomCoder

Well-Known Member
Licensed User
Longtime User
... but when you try to re-open an activity from a service, after your app is dead, then you have a blank activity, with no logs, no responses, no "create" or "resume" triggers,.
This is the bit I have trouble understanding. If you are calling an Activity it will always call Activity_Create and/or Activity_Resume.
 
Upvote 0

RodrigoVitachi

Member
Licensed User
Longtime User
This is the bit I have trouble understanding. If you are calling an Activity it will always call Activity_Create and/or Activity_Resume.

Yes, and that is the problem. It works 100%, but only if the user doesn't close the app. If the app is killed and the service tries to open the activity, then you have a blank activity with 0 response, no triggers, nothing.

Steps to reproduce:

Create a Starter service that restarts itself every 1 minute or 10 seconds ( the time is not important here ).
Every time the user is present ( unlocks the phone screen ), you start an activity.

It will work, every single time.

Now, close the app using the "recent apps" list. Your service will still be alive and will restart.
Now with the app closed, the serviece will try to start the activity again, if you unlock your celphone ( UserPresent trigger )
Now you will have a blank activity.

I tried many workarounds, no success. I tested the app in different devices, same problem. It seems like basically there is no more activity to open after the user closes your app, that's why we have a blank activity.

A simple way to prevent this behavior is to hide my app on the recent apps list. This way the user should use an option inside the app to close it, then i can stop the service as well. Not perfect, maybe not even a good solution, but i have no choice.

Thanks for your time and reply.
 
Last edited:
Upvote 0

corwin42

Expert
Licensed User
Longtime User
I was able to reproduce your problem now.

It happens only if you start the activity from the starter service. If you use another service it works without problem.

I think we have to wait for Erel to comment on this. Maybe this is a bug in the starter service.

Btw:
[...] Plus, considering your answer, i am pretty sure that you didn't even read my post, giving a vague answer, and this is not the kind of help that i or anyone else needs. Thank you very much for your expensive time.

Because of these words I thought some time if I should answer again to your question. You should think about it...
 
Last edited:
Upvote 0

RodrigoVitachi

Member
Licensed User
Longtime User
I was able to reproduce your problem now.

It happens only if you start the activity from the starter service. If you use another service it works without problem.

I think we have to wait for Erel to comment on this. Maybe this is a bug in the starter service.

Btw:


Because of these words I thought some time if I should answer again to your question. You should think about it...

Thinking a little bit more about this activity behavior, i am not sure if it is a bug, because the app actually doesn't exists anymore, it has been closed. I don't know how it works inside.
You are right, the best thing to do is to wait for Erel, but i'll keep my workaround for now, preventing the user to close the app with the recent apps list. Not the best solution, but, it's what i have. Thanks for your reply;
 
Upvote 0

corwin42

Expert
Licensed User
Longtime User
I think a better workaround would be not to use the starter service to call the activity but use a second "normal" service (which can be started initially from the starter service of course).
 
Upvote 0

Erel

B4X founder
Staff member
Licensed User
Longtime User
You shouldn't start an activity from the starter service. When the starter service starts there is always an activity or service that should start right after. The one that the OS intended to start. You should let it start and only then switch to a different activity if you like.
 
Upvote 0

gmachacek

Member
Licensed User
Longtime User
Hallo i still facing this problem.
I have a widget with a labelview as button lets say. when i click first time and from service start the activity i just see empty screen.
Then when i close the empty activity just with buttom back so that it runs in the background and open it again then all elements are shown probably.
lg georg
 
Upvote 0
Top