weston
weston

Reputation: 54781

Android activity silently exiting

My app has a splash screen activity and that starts an intent for the main activity which has an openGL view in it.

Some users are reporting that the game exits and goes back to the splash.

I'm certain that it's a bug, but it's failing silently and so I don't get any crash reports back.

What can cause it to fail silently like this? in such a way that the app cycles and no Force Close window is seen by the user.

Edit: I have stoped the splash screen restarting by putting noHistory="true" in the manifest for the slapsh activity. Now users just report that it exits silently. What would cause that?!

Edit2: If it's any clue, I recently updated from SDK r10 to SDK r16, I believe I have removed all other changes, I'd go back to r10 if I could, but I can't find a way.

Edit Jan 19: I have found the underlying cause of this problem. At some point google introduced to the SDK a feature called "png crush". And PowerVR is not always happy loading those textures. See my other question here for more info and solution.

Upvotes: 4

Views: 710

Answers (4)

Maurizio Benedetti
Maurizio Benedetti

Reputation: 3577

It does happen to my applications as well, quite often during development-debug and it is usually due to the following problem.

  • The GPU goes in an out of memory status since there is too much memory allocated using VBOs. This usually depends on the fact not always the VBOs are deallocated correctly. When it does happen, in my humble experience, is like if the virtual machine hosting your application dies. Ufortunately it is evident that you cannot check the logcat of your users.

The problem is very variable since it depends on the GPU type and on the memory available to the GPU. For instance on my galaxy tab, it happens after (in terms of loaded levels and therefore VBOs) my basic Motorola Defy.

This creates a lot of troubles in the troubleshooting.

:)

Upvotes: 1

Force
Force

Reputation: 6382

Are you using some native code? Because if there is a segment fault, it will print the stacktrace to logcat, but it won't create an Uncought Exception (so in this case plugins like ACRA are useless, even though I can recomment ACRA a lot)

Upvotes: 2

Jin35
Jin35

Reputation: 8612

There is only way to rewrite default exception behavior - UncaughtExceptionHandler. You can create your own class ExceptionHandler implements UncaughtExceptionHandler and do with exceptions whatever you want - send it to you remote server or smth else. To register it you should create Application class:

public class YourApplication extends Application {
@Override
public void onCreate() {
    super.onCreate();
    Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler(this.getApplicationContext()));
    }
}

and register this class in your manifest file

<application 
    android:name="your.package.name.YourApplication" 
    ... >
         ...
</application>

Upvotes: 0

Kimi
Kimi

Reputation: 6279

Without source code, it is hard to tell what is really going on. Try debugging on emulators with different API levels and see if you can reproduce it.

If you can't get it reproduced, I suggest you take a look at ACRA and BugSense. Using those 3rd party crash reporting plugins is super easy and you can even report silent exceptions manually, too.

Upvotes: 3

Related Questions