我有一系列活动如下:
ProductA
> CreditCardA
> PaymentA
> ConfirmationA
> DoneA
现在,确认屏幕需要ProductA
,CreditCardA
和PaymentA
的信息。但是,我不想继续传递对以前的活动无用的数据。 CreditCardA
需要对产品一无所知,PaymentA
并不真正关心信用卡或产品本身,只关心价格以及可以支付多少个月的价格。
所以我想到了使用GreenRobot EventBus。从ProductA
开始,将调用PaymentFlowA
(没有布局),这将在EventBus中注册并从中接收与付款流相关的数据。
这样的事情:
public class PaymentFlowActivity extends BaseActivity {
private CreditCard cc;
// etc...
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
startActivity(CreditCardA);
}
@Override
protected void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Override
protected void onStop() {
EventBus.getDefault().unregister(this);
super.onStop();
}
@Subscribe
void onCreditCard(CreditCardMessage ccMsg;) {
cc = ccMsg.getCreditCard();
startActivity(PaymentA);
}
// etc...
}
现在,我害怕活动停止。如果PaymentFlowA
在用户开启时释放内存,例如PaymentA
或ConfirmationA
,会发生什么?我担心实例状态将无法正常恢复。
有什么想法吗?