我想检查用户是否登录。如果是,则显示主屏幕,否则显示登录屏幕。
现在我想到了两种方法。
1)将登录活动作为启动活动,检查 onCreate() 用户是否已登录,如果是,则显示主屏幕。
2)创建单独的活动来检查用户是否登录。
如果登录则显示主屏幕,否则显示登录屏幕。
但我很困惑我应该怎么做?
有没有标准的方法来做到这一点?
一个比另一个有什么优势吗?
任何帮助,将不胜感激。
提前致谢。
我想检查用户是否登录。如果是,则显示主屏幕,否则显示登录屏幕。
现在我想到了两种方法。
1)将登录活动作为启动活动,检查 onCreate() 用户是否已登录,如果是,则显示主屏幕。
2)创建单独的活动来检查用户是否登录。
如果登录则显示主屏幕,否则显示登录屏幕。
但我很困惑我应该怎么做?
有没有标准的方法来做到这一点?
一个比另一个有什么优势吗?
任何帮助,将不胜感激。
提前致谢。
使用额外的 Activity 进行切换,然后基本上什么都不做,然后切换并启动正确的下一个 Activity,是最简单的,但它会导致额外的过渡效果,这在视觉上不是最佳选择。
尽管对于大多数用户来说,这并不是很明显,所以如果你有时间压力,你可以这样做,然后在时间更灵活的时候更新它。这不是一个可怕的方法。
更好的选择是拥有 1 个主 Activity,它会检查情况并加载正确的 Fragment。如果您熟悉 Fragments,这甚至不会比额外活动选项花费更长的时间。
一种方法是使用片段,而不是在 onCreate() 之后,您只需提交所需的页面,但您的解决方案也没有任何问题。只需创建一个 StartupActivity,检查您需要的信息(显示一些启动屏幕或其他内容,因为我假设此检查在后台线程上运行)并根据结果启动相应的活动。
我认为您的问题没有明确的答案,所以我只会说明我更喜欢在您的情况下做什么。我会避免进行额外的活动,并且会接受您的第一个建议。在登录活动中,为了视觉上正确,我会创建一个AsyncTask
检查用户是否登录的内容。这AsyncTask
应该有一个不可取消ProgressDialog
的消息,例如
正在检查登录信息...
大概AsyncTask
应该在您的方法中最后调用它。onCreate
像这样的东西:
public class LoginScreen extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.loginscreen);
//It may be a good idead to make the Views handling the login process invisible
//Do whatever initialization work for the on create method here.
.
.
.
new CheckLoginAsyncTask().execute(); //This ideally should be called last. But it depends on the situation.
}
.
.
.
private class GetVisitReasonsAsyncTask extends AsyncTask<Void, Void, Boolean> {
private ProgressDialog progressDialog;
@Override
protected void onPreExecute() { //Do the progress dialog initialization here...
progressDialog = ProgressDialog
.show(myActivityContext,
getString(R.string.ProgressDialogTitle),
getString(R.string.ProgressDialogMessage));
}
@Override
protected JSONArray doInBackground(Void... arg0) {
return checkLogin(); //Check login is boolean method returning true if the user is logged in, false otherwise.
}
@Override
protected void onPostExecute(Boolean isLoggedIn) {
dialog.dismiss(); //dismiss the dialog
if(isLoggedIn) {
//User is logged in, finish this activity and go to main menu
} else {
//User is not logged in, stay in this actity and make visible the the Views handling the login process if you had previously make them invisible.
}
}
}
}