Relaunch activity

Hi, I create an android application with some activities and also a Cocos2dxActivity which is a game.

to avoid the terminate process of the game. I changed some code from Cocos2dxActivity terminateProcess() with the following.

private static Cocos2dxActivity me;

public static void terminateProcess(){ //android.os.Process.killProcess(android.os.Process.myPid()); me.finish(); }

It work great to get back to my application.
However, when I want to relaunch the game from the application. It crash

04-22 21:18:35.873: I/DEBUG(31): Build fingerprint: ‘generic/google_sdk/generic/:2.2/FRF91/43546:eng/test-keys’
04-22 21:18:35.873: I/DEBUG(31): pid: 708, tid: 744 >>> com.?.? <<<
04-22 21:18:35.873: I/DEBUG(31): signal 11 (SIGSEGV), fault addr deadbaad
04-22 21:18:35.873: I/DEBUG(31): r0 00000000 r1 80000000 r2 00000027 r3 00000000
04-22 21:18:35.873: I/DEBUG(31): r4 00000000 r5 deadbaad r6 00001728 r7 41864f44
04-22 21:18:35.873: I/DEBUG(31): r8 47b89d10 r9 41864f3c 10 002d1ec0 fp 41864f3c
04-22 21:18:35.873: I/DEBUG(31): ip ffffffff sp 47b89c88 lr afd154c5 pc afd11dc4 cpsr 40000030
04-22 21:18:36.034: I/DEBUG(31): #00 pc 00011dc4 /system/lib/libc.so
04-22 21:18:36.034: I/DEBUG(31): #01 pc 0001889a /system/lib/libc.so
04-22 21:18:36.034: I/DEBUG(31): code around pc:
04-22 21:18:36.034: I/DEBUG(31): afd11da4 1c2bd00b 2d00682d e026d1fb 2b0068db
04-22 21:18:36.034: I/DEBUG(31): afd11db4 4e17d003 51a02001 4d164798 24002227
04-22 21:18:36.034: I/DEBUG(31): afd11dc4 f7fb702a 2106ee14 ef10f7fc 05592380
04-22 21:18:36.034: I/DEBUG(31): afd11dd4 6091aa01 1c116054 94012006 eab6f7fc
04-22 21:18:36.034: I/DEBUG(31): afd11de4 2200a905 f7fc2002 f7fbeac2 2106ee00
04-22 21:18:36.034: I/DEBUG(31): code around lr:
04-22 21:18:36.044: I/DEBUG(31): afd154a4 b0834a0d 589c447b 26009001 686768a5
04-22 21:18:36.044: I/DEBUG(31): afd154b4 220ce008 2b005eab 1c28d003 47889901
04-22 21:18:36.044: I/DEBUG(31): afd154c4 35544306 d5f43f01 2c006824 b003d1ee
04-22 21:18:36.044: I/DEBUG(31): afd154d4 bdf01c30 0002ae7c 000000d4 1c0fb5f0
04-22 21:18:36.044: I/DEBUG(31): afd154e4 43551c3d a904b087 1c16ac01 604d9004
04-22 21:18:36.044: I/DEBUG(31): stack:
04-22 21:18:36.044: I/DEBUG(31): 47b89c48 00000015
04-22 21:18:36.044: I/DEBUG(31): 47b89c4c afd1453b /system/lib/libc.so
04-22 21:18:36.044: I/DEBUG(31): 47b89c50 afd405a0 /system/lib/libc.so
04-22 21:18:36.044: I/DEBUG(31): 47b89c54 afd4054c /system/lib/libc.so
04-22 21:18:36.044: I/DEBUG(31): 47b89c58 00000000
04-22 21:18:36.054: I/DEBUG(31): 47b89c5c afd154c5 /system/lib/libc.so
04-22 21:18:36.054: I/DEBUG(31): 47b89c60 001252f0 [heap]
04-22 21:18:36.054: I/DEBUG(31): 47b89c64 afd1450d /system/lib/libc.so
04-22 21:18:36.054: I/DEBUG(31): 47b89c68 00118a00 [heap]
04-22 21:18:36.054: I/DEBUG(31): 47b89c6c afd40328 /system/lib/libc.so
04-22 21:18:36.054: I/DEBUG(31): 47b89c70 00000000
04-22 21:18:36.054: I/DEBUG(31): 47b89c74 00001728
04-22 21:18:36.054: I/DEBUG(31): 47b89c78 41864f44
04-22 21:18:36.054: I/DEBUG(31): 47b89c7c afd147ab /system/lib/libc.so
04-22 21:18:36.054: I/DEBUG(31): 47b89c80 df002777
04-22 21:18:36.054: I/DEBUG(31): 47b89c84 e3a070ad
04-22 21:18:36.054: I/DEBUG(31): #00 47b89c88 00000003
04-22 21:18:36.054: I/DEBUG(31): 47b89c8c afd40328 /system/lib/libc.so
04-22 21:18:36.054: I/DEBUG(31): 47b89c90 8126dbf8 /data/data/com.?.?/lib/libgame.so
04-22 21:18:36.054: I/DEBUG(31): 47b89c94 00000015
04-22 21:18:36.054: I/DEBUG(31): 47b89c98 41864f44
04-22 21:18:36.054: I/DEBUG(31): 47b89c9c fffffbdf
04-22 21:18:36.064: I/DEBUG(31): 47b89ca0 afd40328 /system/lib/libc.so
04-22 21:18:36.064: I/DEBUG(31): 47b89ca4 8126dbf8 /data/data/com.?.?/lib/libgame.so
04-22 21:18:36.064: I/DEBUG(31): 47b89ca8 00000015
04-22 21:18:36.064: I/DEBUG(31): 47b89cac afd1889f /system/lib/libc.so
04-22 21:18:36.064: I/DEBUG(31): #01 47b89cb0 afd40328 /system/lib/libc.so
04-22 21:18:36.064: I/DEBUG(31): 47b89cb4 afd1889f /system/lib/libc.so
04-22 21:18:36.064: I/DEBUG(31): 47b89cb8 00000015
04-22 21:18:36.064: I/DEBUG(31): 47b89cbc 8126ddb0 /data/data/com.?.?/lib/libgame.so
04-22 21:18:36.064: I/DEBUG(31): 47b89cc0 812b001c /data/data/com.?.?/lib/libgame.so
04-22 21:18:36.064: I/DEBUG(31): 47b89cc4 00000000
04-22 21:18:36.064: I/DEBUG(31): 47b89cc8 44e8c4c4 /data/dalvik-cache/data@app@com.?.?–1.apk@classes.dex
04-22 21:18:36.064: I/DEBUG(31): 47b89ccc 8119e267 /data/data/com.?.?/lib/libgame.so
04-22 21:18:36.064: I/DEBUG(31): 47b89cd0 41864f44
04-22 21:18:36.064: I/DEBUG(31): 47b89cd4 002aa700 [heap]
04-22 21:18:36.074: I/DEBUG(31): 47b89cd8 812b001c /data/data/com.?.?/lib/libgame.so
04-22 21:18:36.074: I/DEBUG(31): 47b89cdc 8113b39b /data/data/com.?.?/lib/libgame.so
04-22 21:18:36.074: I/DEBUG(31): 47b89ce0 47b89d30
04-22 21:18:36.074: I/DEBUG(31): 47b89ce4 002aa700 [heap]
04-22 21:18:36.074: I/DEBUG(31): 47b89ce8 002aa700 [heap]
04-22 21:18:36.074: I/DEBUG(31): 47b89cec 810cbc0d /data/data/com.?.?/lib/libgame.so
04-22 21:18:36.074: I/DEBUG(31): 47b89cf0 000002fa
04-22 21:18:36.074: I/DEBUG(31): 47b89cf4 000001e0

Can I have some directions to make it work?

If you’re launching the game as a separate activity, I found that I needed both the kill process and finish() for my game to work. If I didn’t, restarting the game would cause some stuff not to be initiatised, onEnter not triggered, etc. So you should use:

public static void terminateProcess(){
    me.finish();  // so you can get info out of your game
    android.os.Process.killProcess(android.os.Process.myPid());  // kills it proper
}