Androidの基礎知識_Activity標準起動モードの例
一、サンプルエンジニアリングLaunchModeコード
activity_main.xmlコードは次のとおりです.
二、プログラムの説明
プログラムを実行し、画面に次の情報が表示されます(ID値はランダムで、緑の部分を理解しやすいように注釈です)
TaskID:5//タスクID Current Activity ID://現在のActivityインスタンスcom.example.launchmode.MainActivity@40cf34f8//クラスの定義|インスタンスが存在するアドレス.Activityクラスのインスタンスを指定する
ボタンをクリックして自身のActivityを起動すると、TaskIDは同じであり、Current Activity ID(インスタンスID)は異なることがわかります.つまり、このとき起動したプログラムは同じタスクスタック内で、異なるインスタンスを作成しただけです.(タスクスタック:1つのスタック、起動した最初のインスタンスをタスクスタック内に、起動した2つ目のインスタンスをタスクスタック内に、起動した3つ目のインスタンスをタスクスタック内に…スタック、先に入ってから出たデータ構造、後退時にスタックトップインスタンスをポップアップしてから前のActivityのインスタンスを提示することで、Android Activityジャンプメカニズム)AndroidManifest.xmlのactivityタブではパラメータを設定できます.android:launchMode=「standard」です.これもデフォルトです.
activity_main.xmlコードは次のとおりです.
MainActivity.java代码如下:
package com.example.launchmode;
import org.apache.http.conn.ManagedClientConnection;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView)findViewById(R.id.textView);
/* TextView : ID, Activity ID( Activity ID) */
textView.setText(String.format("TaskID: %d
Current Activity ID: %s", getTaskId(), toString()));
findViewById(R.id.btnStartSelf).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
startActivity(new Intent(MainActivity.this, MainActivity.class));
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
AndroidManifest.xmlファイルactivityラベルのコード部分は以下の通りです(標準起動モード、デフォルト起動モードとも呼ばれ、launchModeプロパティを追加しなくてもよい).
二、プログラムの説明
プログラムを実行し、画面に次の情報が表示されます(ID値はランダムで、緑の部分を理解しやすいように注釈です)
TaskID:5//タスクID Current Activity ID://現在のActivityインスタンスcom.example.launchmode.MainActivity@40cf34f8//クラスの定義|インスタンスが存在するアドレス.Activityクラスのインスタンスを指定する
ボタンをクリックして自身のActivityを起動すると、TaskIDは同じであり、Current Activity ID(インスタンスID)は異なることがわかります.つまり、このとき起動したプログラムは同じタスクスタック内で、異なるインスタンスを作成しただけです.(タスクスタック:1つのスタック、起動した最初のインスタンスをタスクスタック内に、起動した2つ目のインスタンスをタスクスタック内に、起動した3つ目のインスタンスをタスクスタック内に…スタック、先に入ってから出たデータ構造、後退時にスタックトップインスタンスをポップアップしてから前のActivityのインスタンスを提示することで、Android Activityジャンプメカニズム)AndroidManifest.xmlのactivityタブではパラメータを設定できます.android:launchMode=「standard」です.これもデフォルトです.