Reputation: 54781
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
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 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
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
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
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