Android:在活动之间向前和向后传递消息

时间:2015-02-19 21:46:01

标签: android android-activity android-lifecycle

我有4项活动A,B,C,D。 a startsActivityForResult B,B startsActivityForResult C和C startsActivityForResult D. 我想在活动A上执行任务X(取决于活动B的结果)。目前,我使用setResult() / onActivityResult()在活动之间传递和回传消息。这是脆弱的,因为活动B / C可能随时完成,在这种情况下,消息不能通过setResult()传回。我们有更好的方式在这里进行沟通吗?不依赖于活动的生命周期。

3 个答案:

答案 0 :(得分:2)

由于您传递的是简单数据类型,并且希望将这些数据类型保留在Activity的生命周期之外,因此SharedPreference是一种解决方案。以下是有关如何使用SharedPreference

的示例

写作:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt(getString(R.string.saved_high_score), newHighScore);
editor.commit();

读:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
int defaultValue = getResources().getInteger(R.string.saved_high_score_default);
long highScore = sharedPref.getInt(getString(R.string.saved_high_score), defaultValue);

答案 1 :(得分:0)

活动D应发送Intent起始活动A,其中包含从B-> C-> D收集的所有配置参数。您可以使用SINGLE_TOP等意图标志将活动A返回到堆栈顶部。 SharedPreferences可以使用,但您最终会花费大量时间序列化配置并返回活动A,就像创建一个Intent一样。

答案 2 :(得分:0)

我认为this answer可以很好地满足您的需求。只需发送Intent并使用putExtra()功能即可向Intent发送额外数据。然后,当收到Intent时,您可以检索您发送的任何额外数据。