问题描述
|
我想知道什么是最好的方法:
我查询需要登录用户的API。当应用程序开始进行登录时,如果正确,则会在首选项中存储用户/密码。
登录后,如果尝试从API调用该方法时,如果任何活动中都发生NOT_LOGGED错误,我将从首选项中检索用户/密码,然后再次登录。
如果成功,我的程序将再次尝试API查询。如果没有,它将打开LoginActivity。那是我不知道该怎么做的地方。
作为“重新登录”的方法,它已在我决定在MyApp中实现的几个活动中使用,该类从Application扩展而来,使对象在整个活动生命周期中都保持活动状态。但是我不能从那里关闭活动堆栈,可以吗?
我的想法是使用以下方法关闭当前活动堆栈并打开“登录”之一:
if(!mMyApp.relogin(mCtx)){
Intent intent=new Intent(mCtx,activitylogin.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
}
但是我必须从适当的活动中调用方法完成,而不是从MyApp中调用。
所以我必须在使用use1ѭ方法的每个类中重复所有代码。
您是否认为我以正确的方式解决问题,还是应该更改策略?顺便说一句,您认为实现不同活动调用的方法的最佳位置是什么。到目前为止,我一直在使用单例,但是如果gc清除内存,我可能会丢失该信息。
谢谢,
大卫。
解决方法
如果您将“ 2”作为“活动”实例(而不是通用上下文),则可以在其中调用“ 3”方法。尝试一下,看看:它应该可以工作。
无论如何,当您使用
Intent.FLAG_ACTIVITY_CLEAR_TOP
时,它将自动销毁所有活动,因此finish
可能是多余的。