1

我有一种情况,活动 A 已启动活动 B,然后 B 启动活动 C 并自行完成,如下所示:

Intent intent = new Intent(getBaseContext(), Main.class);
intent.putExtra("GAME_TYPE", Game.MULTIPLAYER);
intent.putExtra("GAME_DATA", data.toString());
intent.putExtra("GAME_ID", gameId);
startActivity(intent);
finish();

这通常工作正常,C 被带到前面。当用户关闭 C 时,会显示 A。

如果用户在 B 完成并且 C 正在启动时重复点击屏幕,就会出现问题。这似乎导致 A 来到前台,C 在后台成功启动(LogCat 输出表明 C 正在运行)。

我的猜测是,在 C 有机会启动之前,B 完成并显示了 A,通过点击使 A 成为焦点。这可能是问题的原因吗?如果不是,那是什么?我怎样才能防止这种情况发生并确保即使用户疯狂地敲击也将 C 带到前面?

4

1 回答 1

0

我不确定您的代码和 xml 的结构究竟如何,但一个简单的解决方法是使活动 A 正在运行的布局在调用 onStop 后不可点击。

我建议的另一件事是检查活动 B 如何完成和 C 如何开始。您是否在 C 开始之前在 B 上调用完成?C 是否需要加载大量导致延迟的数据?如果是这样,请考虑等待部分或全部大量数据加载,然后启动 C。

没有任何源代码就不能说别的了。

于 2013-01-31T19:36:31.270 回答