5

ドキュメントによると、次の場合に「onPause」が呼び出されます。

システムが以前のアクティビティの再開を開始しようとしているとき。

「onStop」と比較すると、違いは次のとおりです。

別のアクティビティが再開され、このアクティビティをカバーしているため、アクティビティがユーザーに表示されなくなったときに呼び出されます。

しかし、HW-Home キーを長押しして「最近のアプリ」が表示されると、「onPause」は呼び出されません。

現時点では、元のアクティビティとやり取りすることはできませんが、まだ表示されています。

私はこの状況に混乱しています。説明を手伝ってください。

どうもありがとうございました。BR、ヘンリー

4

5 に答える 5

7

これは実際には、ホームキーを長押しすると、起動されているアクティビティがないために発生します。onPause / onStopは、[最近のアプリ]リストにあるアプリの1つを選択した場合にのみ呼び出されます。

onPause()のドキュメントは非常に明確です。

アクティビティがバックグラウンドに入るときにアクティビティライフサイクルの一部として呼び出されますが、(まだ)強制終了されていません。

于 2012-02-10T10:25:07.183 に答える
3
public class MainActivity extends Activity
{
    String tag="my result";

    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Log.v(tag,"I am in oncreate");
    }

    @Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
        Log.v(tag,"I am in onDestroy");
    }

    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        Log.v(tag,"I am in onpause");
    }

    @Override
    protected void onRestart() {
        // TODO Auto-generated method stub
        super.onRestart();
        Log.v(tag,"I am in onRestart");
    }

    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
        Log.v(tag,"I am in onresume");
    }

    @Override
    protected void onStart() {
        // TODO Auto-generated method stub
        super.onStart();
        Log.v(tag,"I am in onstart");
    }

    @Override
    protected void onStop() {
        // TODO Auto-generated method stub
        super.onStop();
        Log.v(tag,"I am in onstop");
    }
}

それを実行し、logcat.press back ボタンを確認してから、check.after 再度アプリケーションを起動し、

呼び出しボタンを押して logcat を確認し、[戻る] ボタンを押して再度 logcat を確認します。アクティビティのライフサイクルを簡単に理解できます。

于 2012-02-10T11:35:47.303 に答える
0

@Henry アプリの流れをテストしてみてください。すべてのメソッドをオーバーライドし、すべてのメソッドの下にログを出力するアクティビティを作成します。フローは onCreate>>onStart/restart>>onResume であり、ホームボタンを押すか新しいアクティビティを開始すると、onPause>>onStop が呼び出され、アプリを終了するとアプリが破棄/終了するため、どこが混乱するかがわかりません。

于 2012-02-10T10:19:53.970 に答える
0

これは、公式ドキュメントがonPause()について述べていることです

アクティビティがバックグラウンドに移行するときに、アクティビティ ライフサイクルの一部として呼び出されますが、(まだ) 強制終了されていません。onResume() に対応するものです。

アクティビティ B がアクティビティ A の前に起動されると、このコールバックが A で呼び出されます。B は、A の onPause() が戻るまで作成されないため、ここで長いことを行わないようにしてください。

詳しくはこちらをご覧ください

于 2012-02-10T10:49:53.040 に答える