KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have an android app that is setup to start a Java activity (call it MyJavaActivity), which in turn launches a NativeActivity. When the NativeActivity finishes it returns back to MyJavaActivity. I also have a Java singleton class (call it MyJavaSingleton) which I would like to stay in memory throughout my application's lifecycle. I set some of the singleton class's member variables from my NativeActivity (using JNI), which can later be retrieved by MyJavaActivity. The problem is, MyJavaSingleton instance seems to be in memory until NativeActive exits, but somehow seems to be set to null again when MyJavaActivity starts up again, so all the variables I had set in NativeActivity are now reset to their defaults. Why does this happen? public class MyJavaActivity extends Activity implements View.OnTouchListener { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); MyJavaSingleton.Instance().DoStuff(); } @Override public boolean onTouch(View arg0, MotionEvent arg1) { Intent intent = new Intent(MyJavaActivity.this, NativeActivity.class); startActivity(intent); // at this point, android_main will be executed } } ///////////////////////////// public class MyJavaSingleton { static private MyJavaSingleton mInstance = null; synchronized public static MyJavaSingleton Instance() { if( mInstance == null ) { mInstance = new MyJavaSingleton(); Log.v(TAG, "New MyJavaSIngleton instance"); } return mInstance; } } ///////////////////////////// // Native void android_main(struct android_app* state) { // Do various stuff, set some variables on the MyJavaSingleton // At this point, MyJavaSingleton.mInstance is still at the same address in memory, which is good // ANativeActivity_finish(state->activity); exit(0); // Problem: sometime after this exit and before MyJavaActivity::onCreat
Tags (comma-separated)
Save Edits
Cancel