簡體   English   中英

在onDestroy之后不再調用onActivityResult

[英]onActivityResult no longer being called after onDestroy

onActivityResult讓我頭疼不已。 我的小游戲有標題/菜單屏幕。 單擊“新游戲”后,將啟動一個活動,該活動將為我的游戲世界創建一個SurfaceView。

玩游戲時,玩家可以進入游戲世界中的建築物。 進入建築物后,我從SurfaveView啟動該特定建築物的活動。 這是一個例子:

   Intent storeIntent = new Intent(mMinerClass, GeneralStore.class);
   storeIntent.putExtra("player", mPlayer.save());   
    ((Activity) mContext).startActivityForResult(storeIntent, Miner.REQUEST_STORE);

mMinerClass在游戲Activity onCreate中定義:

  mMap .mMinerClass = Miner.this;

mMap是SurfaceView。 我正在傳遞包含播放器狀態的捆綁包。 在onActivityResult中,我獲取商店活動返回的包並更新玩家狀態。

 public void onActivityResult(int requestCode, int resultCode, Intent intent) {
      Bundle player = intent.getExtras();
      mMap.mSavedPlayer = player;
  }

mSavedPlayer稍后用於設置新的播放器狀態。

以上所有工作一般

我可以進入商店,購買東西,離開,並且播放器已正確更新。

當我按下“主頁”按鈕(或某些返回按鈕)並調用onDestroy時,問題就會顯現。 我的onDestroy方法除了調用super.onDestroy()之外什么也不做。

在onDestroy()被調用之后,onActivityResult將不再被調用。

所以:

1)我玩游戲,一切正常。

2)我按回家,然后叫毀滅

3)通過啟動器圖標重新啟動我的游戲

4)恢復游戲。 我仍然可以進入和離開商店,但不再調用onActivityResult。

這是一些logcat輸出。 每次輸入相關方法時,我都會記錄日志。

  App start.  Resuming a saved game
  07-03 00:33:04.759: ERROR/Miner(4014): -->onCreate
  07-03 00:33:04.819: ERROR/Miner(4014): -->onStart
  07-03 00:33:08.329: ERROR/Miner(4014): -->onResume

  Enter store and buy stuff 2 times.  Everything working great.
  07-03 00:33:30.419: ERROR/Miner(4014): -->onPause
  07-03 00:33:31.279: ERROR/Miner(4014): -->onStop
  07-03 00:33:35.069: ERROR/Miner(4014): -->onActivityResult
  07-03 00:33:35.069: ERROR/Miner(4014): -->onRestart
  07-03 00:33:35.069: ERROR/Miner(4014): -->onStart
  07-03 00:33:36.709: ERROR/Miner(4014): -->onResume
  07-03 00:33:42.129: ERROR/Miner(4014): -->onPause
  07-03 00:33:43.289: ERROR/Miner(4014): -->onStop
  07-03 00:33:55.279: ERROR/Miner(4014): -->onActivityResult
  07-03 00:33:55.279: ERROR/Miner(4014): -->onRestart
  07-03 00:33:55.279: ERROR/Miner(4014): -->onStart
  07-03 00:33:56.879: ERROR/Miner(4014): -->onResume

  Back button pressed bringing me to title screen
  07-03 00:35:26.283: ERROR/Miner(4014): -->onPause
  07-03 00:35:27.153: ERROR/Miner(4014): -->onStop
  07-03 00:35:27.333: ERROR/Miner(4014): -->onDestroy

  Resume Game
  07-03 00:36:12.953: ERROR/Miner(4014): -->onCreate
  07-03 00:36:13.003: ERROR/Miner(4014): -->onStart
  07-03 00:36:14.663: ERROR/Miner(4014): -->onResume

  Enter store and buy stuff twice.  No more onActivityResult

  07-03 00:36:52.063: ERROR/Miner(4014): -->onPause
  07-03 00:36:52.863: ERROR/Miner(4014): -->onStop
  07-03 00:36:59.913: ERROR/Miner(4014): -->onRestart
  07-03 00:36:59.913: ERROR/Miner(4014): -->onStart
  07-03 00:37:01.593: ERROR/Miner(4014): -->onResume
  07-03 00:37:23.353: ERROR/Miner(4014): -->onPause
  07-03 00:37:24.173: ERROR/Miner(4014): -->onStop
  07-03 00:37:29.173: ERROR/Miner(4014): -->onRestart
  07-03 00:37:29.173: ERROR/Miner(4014): -->onStart
  07-03 00:37:30.793: ERROR/Miner(4014): -->onResume

我正在通過手機發布此信息,因此請原諒任何愚蠢的錯別字。

我感謝大家對此提供的任何見解。 謝謝!

您應該特別注意這一行:

((Activity) mContext).startActivityForResult(storeIntent, Miner.REQUEST_STORE)

您確定mContext是正確的活動嗎? 我懷疑這不是當前活動,而是對另一個活動實例(之前關閉的第一個活動實例)的引用。 您可以使用“ this”代替mContext嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM