OnActivityResult不再被打电话给Ondestroy
-
02-10-2019 - |
题
OnActivityResult给我带来了重大头痛。我的小游戏有一个标题 /菜单屏幕。单击“新游戏”后,启动了一项活动,为我的游戏世界创建了SurfaceView。
演奏时,玩家可以进入游戏世界中的建筑物。进入建筑物后,我从我的Surfaveview开始为该特定建筑物发起活动。这是一个示例:
Intent storeIntent = new Intent(mMinerClass, GeneralStore.class);
storeIntent.putExtra("player", mPlayer.save());
((Activity) mContext).startActivityForResult(storeIntent, Miner.REQUEST_STORE);
Mminerclass在游戏活动中定义了:
mMap .mMinerClass = Miner.this;
MMAP是表面视图。我通过一个包含玩家状态的捆绑包。在OnActivityResult中,我抓住了商店活动返回的捆绑包并更新播放器状态。
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
Bundle player = intent.getExtras();
mMap.mSavedPlayer = player;
}
MSAVEDPLAYER后来用于设置新玩家状态。
以上所有工作通常作用
我可以输入商店,购买东西,离开,玩家可以正确更新。
问题 当我按下“主页”按钮(或某个后退按钮)并打电话给Ondestroy时,它会表现出来。我的ondestroy方法除了call super.ondestroy()之外,什么也没做;
在ondestroy()被称为onActivityResult之后,不再被调用。
所以:
1)我玩游戏,一切都很好。
2)我按回家,ondestroy被称为
3)通过启动器图标重新启动我的游戏
4)恢复游戏。我仍然可以输入并离开商店,但不再称呼ocativityResult。
这是一些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是正确的活动吗?我怀疑这不是当前活动,而是对另一个活动实例的引用,这是以前关闭的活动。您可以使用“此”而不是McOntext?
不隶属于 StackOverflow