首先我想说的是我对这个模糊的标题感到抱歉。我不知道还有什么可以说出这个问题。
我有2个活动(ActivityA,ActivityB)。在ActivityA中,我重写了onStop()
函数,并在单例中更改了值X.当我转到ActivityB并调用onStart()
时,我检查值X.问题是在onStart()
之前调用了onStop()
,并且我在onStart()
函数中检查的值是仍然是onStop()
之前的旧值更改它。
我知道为什么在onStart()
之前调用onStop()
。我问你们是我现在遇到的这个问题的替代解决方案。
我需要在关闭它之前在ActivityA中保存一个值,我需要在ActivityB中检查相同的值。可以从其他几个活动访问ActivityB,而不仅仅是ActivityA。而且,otehr活动不会改变价值。
解决 我将onStop()改为onPause()。谢谢你们!
答案 0 :(得分:3)
不要使用单身人士。
活动将Intent
用作它们之间的沟通渠道。
在活动A:
中这样做Intent i = new Intent(this, ActivityB.class);
i.putExtra("value", 10);
startActivity(i);
然后在活动B中,你做(在任何你想要的地方):
int value = getIntent.getIntExtra("value", 0);
也适用于double,string,float,bundle,arrays等,如in the docs!
所示答案 1 :(得分:0)
完全取决于调用这些方法的系统,更好的方法是使用onPause();
和onResume();
See what the Official Docs say here
活动的前景生命周期发生在对onResume()的调用之间,直到对onPause()的相应调用。在此期间,活动位于所有其他活动之前并与用户交互。活动可以经常在恢复和暂停状态之间进行 - 例如,当设备进入休眠状态,交付活动结果时,交付新意图时 - 因此这些方法中的代码应该相当轻量级。 p>