我正在設計一個android遊戲,我只想要它的一個實例。android singleTask/singleInstance問題
遊戲具有我稱爲GameActivity的主要活動以及另一個稱爲CreateAccountActivity的活動。
我將清單中的GameActivity定義爲android:launchMode="singleTask"
。
當應用程序第一次啓動時,我使用startActivityForResult
方法啓動CreateAccoutActivity。
問題是,當我點擊主頁按鈕,然後啓動我的應用程序,沒有任何反應(從用戶的角度來看,但我從日誌中看到CreateAccountActivity被銷燬,GameActivity onActivityResult
被調用,然後它也被銷燬了。得到RESULT_CANCEL
關閉過程
這裏的日誌:
12-28 14:30:11.910: V/WindowManager(24745): Dsptch > Window{47ce9868 com.sec.android.app.twlauncher/com.sec.android.app.twlauncher.Launcher paused=false}
12-28 14:30:11.910: V/InputDevice(24745): ID[0]=0(0) Dn(0=>1)
12-28 14:30:11.973: D/dalvikvm(7770): GC_EXTERNAL_ALLOC freed 313 objects/12648 bytes in 25ms
12-28 14:30:12.004: V/InputDevice(24745): ID[0]=0(0) Up(1=>0)
12-28 14:30:12.039: D/dalvikvm(7770): GC_EXTERNAL_ALLOC freed 88 objects/2680 bytes in 25ms
12-28 14:30:12.110: D/dalvikvm(7770): GC_EXTERNAL_ALLOC freed 24 objects/864 bytes in 25ms
12-28 14:30:12.157: V/WindowManager(24745): Dsptch > Window{47ce9868 com.sec.android.app.twlauncher/com.sec.android.app.twlauncher.Launcher paused=false}
12-28 14:30:12.157: I/ActivityManager(24745): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.*****.tq/.GameActivity }
12-28 14:30:12.161: D/Launcher.Workspace(7770): WorkspaceDraw: Workspace drawWallpaperImage()
12-28 14:30:12.168: I/CreateAccountActivity(9369): onDestroy
12-28 14:30:12.172: I/Launcher(7770): onPause()
12-28 14:30:12.184: W/Launcher(7770): WallpaperManager setVisibility visible true
12-28 14:30:12.203: I/GameActivity(9369): Game activity onActivityResult
12-28 14:30:12.203: I/GameActivity(9369): disconnecting from main server
12-28 14:30:12.203: I/ConnectionManager(9369): Disconnecting...
12-28 14:30:12.207: I/GameActivity(9369): Game activity onNewIntent is called
12-28 14:30:12.215: I/Launcher(7770): onWindowFocusChanged(false)
12-28 14:30:12.219: I/Launcher(7770): onResume(). mIsNewIntent : false
12-28 14:30:12.219: E/Launcher(7770): MTP-LAUNCHER: media scanning not yet finished .
12-28 14:30:12.219: I/Launcher(7770): onResume() ended
12-28 14:30:12.219: I/Launcher(7770): onWindowFocusChanged(true)
12-28 14:30:12.223: W/InputManagerService(24745): Window already focused, ignoring focus gain of: [email protected]
12-28 14:30:12.227: D/Launcher.Workspace(7770): WorkspaceDraw: Workspace drawWallpaperImage()
12-28 14:30:12.235: I/GameActivity(9369): Game activity destroyed
12-28 14:30:12.762: D/BatteryService(24745): update start
12-28 14:30:12.770: D/BatteryService(24745): updateBattery level:100 scale:100 status:5 health:2 present:true voltage: 4240 temperature: 360 technology: Li-ion AC powered:false USB powered:true icon:17302163
12-28 14:30:12.801: I/StatusBarPolicy(24745): BAT. status:5 health:2
12-28 14:30:12.801: D/WifiService(24745): ACTION_BATTERY_CHANGED pluggedType: 2
12-28 14:30:13.231: W/Launcher(7770): WallpaperManager setVisibility visible false
12-28 14:30:13.375: D/Launcher.Workspace(7770): WorkspaceDraw: Workspace drawWallpaperImage()
爲簡單起見,我描述它這樣的: 活性A = MAIN - singleTask 活性B =(未定義 - 標準)
一個startsForResult乙 - >主頁按鈕 - >遊戲啓動按鈕 - >乙被毀 - >一個onActivityResult被稱爲 - >已銷燬 - >遊戲啓動按鈕 - >一個startstForResult乙...
編輯
我現在懷疑我是否需要使用singleTask。
是真的嗎,無論從哪裏開始我的活動是由android而不是由我編碼的意圖,android會始終重新啓動我的應用程序,並且不會有任何多個我的活動實例?
,如果是這樣的話,任何事情都是咕-ood :)
請張貼您的清單。你描述的行爲很奇怪。 – 2015-02-01 21:52:40