我有4项活动A,B,C,D。 a startsActivityForResult B,B startsActivityForResult C和C startsActivityForResult D.
我想在活动A上执行任务X(取决于活动B的结果)。目前,我使用setResult()
/ onActivityResult()
在活动之间传递和回传消息。这是脆弱的,因为活动B / C可能随时完成,在这种情况下,消息不能通过setResult()
传回。我们有更好的方式在这里进行沟通吗?不依赖于活动的生命周期。
答案 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
时,您可以检索您发送的任何额外数据。