我想知道什么是做到这一点的最好办法:我查询到需要记录用户的API检查用户登录和启动LoginActivity
。当应用程序开始进行登录时,如果它正确,将存储用户/传入首选项。
一旦我们记录了,如果在我试图从API调用方法的任何活动中发生NOT_LOGGED错误,我将从首选项中检索用户/密码并再次执行登录。 如果成功,我的程序将再次尝试API查询。如果不是,则会打开LoginActivity。这就是我不知道最好做什么的地方。
作为“Relogin”的使用方法,我已决定在MyApp中实现,这是一个从Application延伸并保持对象在Activityitiy的所有生命周期中一直存在的类。但是我无法从那里关闭一堆活动,对吗? 我的想法是关闭的活动当前堆栈并打开登录一个,使用此:
if(!mMyApp.relogin(mCtx)){
Intent intent=new Intent(mCtx,ActivityLogin.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
}
但我不得不打电话从适当的活动方法完成,但没有从MyApp的。 所以我必须重复所有我使用relogin(mCtx)
方法的每个类中的所有代码。
您是否认为我以正确的方式解决问题,还是应该改变策略?顺便说一下,您认为最好的地方是实施将从不同活动中调用的方法。到目前为止,我一直在使用单身人士,但如果gc清理内存,我可能会失去这些信息。
谢谢, David。
你对通用上下文有什么意思? mCtx是Activity的成员,因此如果我没有错,就是一个活动实例。 – Dayerman 2011-06-15 15:28:04
啊,我假设relogin签名是'relogin(Context mCtx);',不是'relogin(Activity mCtx);'。如果你想调用'finish',它必须是第二个,因为'finish'是一个特定于Activity的方法,并且在Context中不可用。 – Femi 2011-06-15 15:39:32
从外部使用FLAG_ACTIVTY_CLEAR_TOP调用它不起作用的活动。一个错误产生至极说::导致:android.util.AndroidRuntimeException:从活动上下文外调用startActivity()需要FLAG_ACTIVITY_NEW_TASK标志。这真的是你想要的吗? – Dayerman 2011-06-15 16:16:24