クラスで Android プログラミングを学んでいますが、finish() がアクティビティのライフサイクルにどのように適合するかについて簡単な質問があります。
finish() を呼び出すと、どのライフサイクル コールバックが開始されますか? onPause()、onStop()、onDestroy() だと思います。これは正しいです?
本当に、onDestroy() に直接ジャンプしないようにしたいだけです。
クラスで Android プログラミングを学んでいますが、finish() がアクティビティのライフサイクルにどのように適合するかについて簡単な質問があります。
finish() を呼び出すと、どのライフサイクル コールバックが開始されますか? onPause()、onStop()、onDestroy() だと思います。これは正しいです?
本当に、onDestroy() に直接ジャンプしないようにしたいだけです。
本当に、onDestroy() に直接ジャンプしないようにしたいだけです。???
ただし、finish() を呼び出すとアクティビティのライフサイクルが中断されるという例外が1 つあります。これは、onCreate() メソッドから finish() を呼び出すと発生します。
http://developer.android.com/reference/android/app/Activity.html#onCreate(android.os.Bundle)
あなたは正しいです。onPause、onStop、onDestroy。
ここにドキュメントがあります。
はい、onPause と onStop をスキップして onDestroy() にジャンプすることはありません。
また、 onPostResume() 、onPostPause() 、onPostCreate()、onUserLeaveHint()などにも興味があるかもしれません....これらはアクティビティのライフサイクルにはリストされていません
そのような問題や問題を分析することも非常に興味深いかもしれません。たとえば、onPause()メソッドで debuggin-breakpoint を設定し、この時点からプログラム フローを調べることができます。
また、一部の印刷物は、役立つ情報を提供します。
たとえば、 System.out.println("メソッドの名前" + "呼び出された"); と書くことができます。呼び出されると思われるアクティビティの各メソッドで。(たとえばonPause()を上書きし、 super.onPause ()を呼び出して、メソッドが呼び出されたかどうかを確認するためにコンソールの出力を配置します。
開発中にこのような小さな調査を行うことで、Android システムについて多くのことを学ぶことができます。
新しい Android アプリを作成し、これをメイン アクティビティに配置します。
次に、出力の LogCat ウィンドウ (Android の DDMS の下) を表示します。
アプリケーションを同じように構築します-出力を含む onPause、onStop などのすべてのメソッドを LogCat に追加します。
プログラムの実行中に、何がいつ呼び出されたかを監視できます。
package com.app.myapp;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
public class MyApp extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
LinearLayout layout = new LinearLayout(this);
Button exit = new Button(this);
exit.setText("finish");
exit.setOnClickListener(new Button.OnClickListener()
{
public void onClick(View v)
{
// TODO Auto-generated method stub
Log.v("MyApp", "finish");
finish();
}
});
layout.addView(exit);
setContentView(layout);
Log.v("MyApp", "onCreate");
}
@Override
protected void onDestroy()
{
// TODO Auto-generated method stub
super.onDestroy();
Log.v("MyApp", "onDestroy");
}
@Override
protected void onPause()
{
// TODO Auto-generated method stub
super.onPause();
Log.v("MyApp", "onPause");
}
@Override
protected void onRestart()
{
// TODO Auto-generated method stub
super.onRestart();
Log.v("MyApp", "onRestart");
}
@Override
protected void onResume()
{
// TODO Auto-generated method stub
super.onResume();
Log.v("MyApp", "onResume");
}
@Override
protected void onStart()
{
// TODO Auto-generated method stub
super.onStart();
Log.v("MyApp", "onStart");
}
@Override
protected void onStop()
{
// TODO Auto-generated method stub
super.onStop();
Log.v("MyApp", "onStop");
}
}