8

サインインした後、ウェルカム画面が表示されるアプリがあります。onResumeがいつ起動するかを確認するためにトーストを配置しましたが、onCreateの後にも起動します

protected void onResume(){
    super.onResume();
    Database openHelper = new Database(this);//create new Database to take advantage of the SQLiteOpenHelper class
    myDB2 = openHelper.getReadableDatabase(); // or getWritableDatabase();
    myDB2=SQLiteDatabase.openDatabase("data/data/com.example.login2/databases/aeglea", null, SQLiteDatabase.OPEN_READONLY);//set myDB to aeglea
         cur = fetchOption("SELECT * FROM user_login");//use above to execute SQL query
         msg.setText("Username: "+cur.getString(cur.getColumnIndex("username"))
                     +"\nFull name: "+cur.getString(cur.getColumnIndex("name"))+" "+cur.getString(cur.getColumnIndex("last"))
                     +"\ne-mail: "+cur.getString(cur.getColumnIndex("email"))
                     +"\nAeglea id:"+cur.getString(cur.getColumnIndex("uid")));

         Toast.makeText(getApplicationContext(), "RESUMED", Toast.LENGTH_SHORT).show();
}

それはから来ています:

 //create new intent
 Intent log = new Intent(getApplicationContext(), Welcome.class);
 // Close all views before launching logged
  log.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
  startActivity(log);
   // Close Login Screen
   finish();

私は困惑しています。ここでいくつかの経験を提供してください

4

4 に答える 4

21

さて、私はあなたが何を尋ねようとしているのか、ここでの質問は何なのかよくわかりません。しかし、「 Androidアクティビティライフサイクル」を読むことをお勧めします。これにより、 Androidで発生する疑問の多くが他の言語やプラットフォームと同じではないことが明らかになります。

ここに画像の説明を入力してください

注: OnResumeは、アクティビティが「表示」されるたびに呼び出されるため、アクティビティが表示される回数だけ、メソッドが呼び出される回数と同じになります。初めてメソッドを呼び出したい場合は、OnCreateが最適です。

于 2012-08-30T19:08:00.530 に答える
7

アクティビティ ライフサイクル ステート チャートをご覧ください。

メソッドが呼び出される順序は次のとおりです。

  1. onCreate()
  2. onStart()
  3. onResume()
  4. -> アクティビティが実行中です

http://developer.android.com/reference/android/app/Activity.html#ProcessLifecycle

于 2012-08-30T19:10:19.297 に答える
2

onResumeafteronCreateは通常のアクティビティ ライフサイクルです

最初の起動でも取得onStartしてonResume呼び出す理由は、コードの記述が容易になるためです。

に戻る前に、「再開」状態を終了する方法がないため、呼び出されるonResumeと想定できます。その動作を使用して、 で物事を初期化したり、さらにチェックインせずにそれらを初期化解除したりできます。それが最初に呼び出されたことを確認できない場合、スキーム全体が壊れます。onPauseonPauseonResumeonPauseonResume

補足: どのメソッドからもデータベースにアクセスしないでください。onXYZこれは、UI を描画してタッチ イベントを処理する必要がある UI スレッドをブロックするためです。

于 2012-08-30T19:20:08.003 に答える