私の Android アプリでは、ユーザーがアプリを使用できるようにアカウントを作成する必要があります。アカウント情報は SQLite データベースに保存されます。アプリケーションの起動時に、ユーザーがアカウントを持っているかどうかを確認し、持っていない場合はユーザーのサインアップ アクティビティを表示します。
今では、ユーザーから、既にアカウントを作成しているにもかかわらず、サインアップ アクティビティに来ることがあるという報告を受けています。これは、アプリケーションを閉じて再度開いたときに発生します。
これは私が使用しているコードであり、問題が何であるかを把握する必要があります:
//MyApplication.java
public class MyApplication extends Application {
private DataBaseUtility dbu;
public boolean hasAccount;
@Override
public void onCreate() {
super.onCreate();
//Init sqlite database
this.dbu = new DataBaseUtility(this);
//This loads the account data from the database and returns true if the user has already created an account
this.hasAccount = loadAccount();
}
public boolean loadAccount() {
boolean loadedData = false;
String query = "SELECT data FROM tblaccount WHERE tblaccount.deleted=0";
Cursor cursor = this.dbu.getCursor(query);
if (cursor != null) {
while (cursor.moveToNext()) {
loadedData = true;
}
cursor.close();
}
return loadedData;
}
}
//MainActivity.java
public class MainActivity extends TabActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MyApplication application = (MyApplication)getApplication();
if (!application.hasAccount) {
//Take the user to the sign up activity
}
}
私の考えでは、 のMainActivity.onCreate()
前に実行されることがありますMyApplication.onCreate()
。そんなことありえますか?