On Jun 25, 2012, at 6:49 AM, keith <[email protected]> wrote:
> I have been getting random null reference exceptions in my app when running 
> on lower end devices (galaxy ace in this case), but not on a desire s or
> emulators.

There are two things to check.

1. Check the Android Debug Log for process startup messages:

        http://docs.xamarin.com/android/advanced_topics/android_debug_log

The messages to look for are messages containing "__mono" and your package 
name, and are generated every time a Mono for Android process is started:

        I/ActivityThread(10777): Pub 
Scratch.SreProxy.mono.MonoRuntimeProvider.__mono_init__: 
mono.MonoRuntimeProvider 

The above comes from the "Scratch.SreProxy" app (just a random test app).

The question: do you see _two_ (or more) of these messages for a "single" app 
launch?

What could be happening is the Activity lifecycle: if your Activity isn't 
visible, Android is free to kill your process:

        
http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

If Android kills your process and then the user navigates back to your 
Activity, Android will re-lauch the process and Activity (thus generating 
another __mono_ message in the debug log).

If you see this, then the solution is to capture the Activity lifecycle events 
and persistently save your singleton data so that you can restore it later.

2. The other thing to check is (of course) various bugs. A "brute force" 
solution is to enable tracing (which WILL spam your logcat, though hopefully to 
useful effect):

        http://docs.xamarin.com/android/advanced_topics/diagnostics

For example:

        adb shell setprop debug.mono.trace all,-N:System.Net

 - Jon

_______________________________________________
Monodroid mailing list
[email protected]

UNSUBSCRIBE INFORMATION:
http://lists.ximian.com/mailman/listinfo/monodroid

Reply via email to