我想为第一次运行我的应用程序的用户提供一个注册活动。我不希望用户能够通过此注册活动,如果他不想注册,他必须关闭应用程序。
我可以通过存储 in SharedPreferences
来检查用户是否已注册,这似乎没有任何问题。到目前为止,我在主活动中拥有的内容:
public void onCreate(Bundle savedInstanceState) {
if (needsRegistration()) {
Intent intent = new Intent(this, RegistrationActivity.class);
startActivity(intent);
}
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
...
}
我对此有以下问题:
- 我
- 不确定我应该从哪里开始注册活动(在
super.onCreate(savedInstanceState)
之前还是之后? - 主活动似乎继续在后台工作并产生错误(因为用户未注册)
- 用户可以通过按后退按钮转到主活动
正确的方法是什么?
我不确定我应该在哪里开始注册活动(在super.onCreate(savedInstanceState)之前或之后?
在执行onCreate()
、onResume()
等打开功能时,您应该将super()
调用作为第一个调用。这样,函数可以执行super()
调用所需的所有操作,以便函数准备就绪。这并不总是一个问题,但先打电话更安全。精加工功能,如onBackPressed()
、finish()
等...应该在执行清理(例如保存数据)后进行super()
调用。
主活动似乎继续在后台工作并产生错误(因为用户未注册)
使RegistrationActivity
启动器Activity
并检查用户是否已注册,如果是,则启动MainActivity
否则显示您的注册码或在这种情况下执行的任何操作。
用户可以通过按后退按钮转到主活动
请参阅前面的解决方案。如果MainActivity
仅从RegistrationActivity
开始,则这不是问题。
检查SharedPreferences
以查看用户是否已注册应该不会造成太大延迟,因此您可以在为该Activity
创建layout
之前执行此操作,如果他们已注册,请转到MainActivity
。如果由于某种原因您注意到很多延迟,那么您可以在检查是否注册时制作一个初始屏幕以显示您的徽标或任何内容,然后通过转到注册或主Activity
来采取适当的操作。