Activityの使い方の詳細

5257 ワード

2番目のActivityの作成
インベントリファイルにactivityラベルを構成する必要があります.
ラベルにこのサブノードがある場合、システムにショートカットアイコン
 
     
     
 
が複数作成されます.
1つのアプリケーションで、デスクトップに複数のショートカットアイコンを作成できます.
Activityの名前、アイコンとアプリケーションの名前、アイコンが異なる
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
Activityのジャンプ
ActivityのジャンプにはIntentオブジェクトを作成する必要があります.intentオブジェクトのパラメータを設定してActivityをジャンプするように指定します.
Activityのパッケージ名とクラス名を設定することで、明示的な意図と呼ばれるジャンプを実現
指定された動作でジャンプを実現することを暗黙的意図と呼ぶ
明示的な意図.
同じ項目の下の別のActivityにジャンプし、そのActivityのバイトコードを直接指定すれば
Intent intent = new Intent();
intent.setClass(this, SecondActivity.class);
startActivity(intent);
になります.
他のアプリケーションのActivityにジャンプするには、アプリケーションのパッケージ名とActivityのクラス名
Intent intent = new Intent();
//            
intent.setClassName("com.android.dialer", "com.android.dialer.DialtactsActivity");
startActivity(intent);
を指定する必要があります.
暗黙的意図.
暗黙的に指定されたActivity
Intent intent = new Intent();
//            
intent.setAction(Intent.ACTION_DIAL);
startActivity(intent);
にジャンプします.
Activityを暗黙的に起動できるようにするには、インベントリファイルのactivityノードにintent-filterサブノード

    
    
    

を設定する必要があります.
Action指定アクション(カスタマイズ可能、システム付属)data指定データ(操作内容)Categoryカテゴリ(デフォルトカテゴリ、トップボックス、車載パソコン)
暗黙的にActivityを起動するには、intentに上記の3つの属性を設定する必要があり、その値は、リストファイル内の3つの属性の定義と一致する必要がある.
intent-filterノードとそのサブノードは同時に複数定義ことができ、暗黙的に起動するときはいずれかと一致するだけでである.
setDataで渡されたデータの取得
    //     Activity intent  
    Intent intent = getIntent();
    Uri uri = intent.getData();

明示的意図と暗黙的意図の適用シーン
同じアプリケーションでActivity を起動するために明示的に意図されている
異なるアプリケーションでActivityを起動するための暗黙的な意図
システムに複数のActivityのintent-filterが同時にあなたのintentと一致している場合、システムはダイアログボックスを表示し、すべての一致するActivityをリストし、ユーザーがどのを起動するかを選択します.

Activityジャンプ時のデータ転送
ActivityがIntentを介して起動する場合、Intentオブジェクトを介してターゲットActivity
Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra("maleName", maleName);
intent.putExtra("femaleName", femaleName);
startActivity(intent);
にデータを携帯することができる.
ターゲットActivityからデータ
Intent intent = getIntent();
String maleName = intent.getStringExtra("maleName");
String femaleName = intent.getStringExtra("femaleName");
を取り出す.
Activityライフサイクル
*oncreate:Activityオブジェクトの作成が完了しましたが、この時点では表示されません*onstart:Activityは画面に表示されますが、フォーカスはありません*onResume:Activityは画面に表示され、フォーカスが得られます*onPause:Activityは画面に表示されますが、フォーカスはありません*onStop:Activityは表示されません.この時点でActivityはバックグラウンドActivity*onDestroy:Activityオブジェクトと呼ばれて破棄されます
シーンの操作
Activityの作成時にリソースを初期化する必要があり、破棄時にリソースを解放する必要がある.あるいはプレーヤーアプリケーションは、インタフェースがバックグラウンドに入るときにを自動的に一時停止する必要がある.
完全ライフサイクル(entire lifetime)
onCreate-->onStart-->onResume-->onPause-->onStop-->onDestory
ビジュアルライフサイクル(visible lifetime)
onStart-->onResume-->onPause-->onStop
フロントライフサイクル(foreground lifetime)
onResume-->onPause
Activityの4種類の起動モード
各アプリケーションにはActivityタスクスタックがあり、起動したActivityを格納します.
Activityの起動モード、タスクスタックの配置を変更する
Standard標準起動モードsingleTop単一トップモード
タスクスタックのスタックの上部にこの開くactivityがある場合、activityは再作成されず、既存のactivityが多重化されます.スタックトップが存在する場合、重複して作成されないことを保証します.
アプリケーションシーン:ブラウザのブックマーク、メールを送信するページ
singeTask単一タスクスタックは、現在のタスクスタックに1つのインスタンスしか存在しません.
activityをオンにすると、タスクスタックにインスタンスがすでに存在するかどうかをチェックし、インスタンスが存在する場合は既存のactivityを多重化し、このactivityの上のすべての他のactivityを空にして、既存のactivityを多重化します.タスクスタック全体にのインスタンスが1つしか存在しないことを保証します.
適用シーン:ブラウザのactivity activityの作成に大量のシステムリソース(cpu、メモリ)を必要とする場合、このactivityはsingletaskの起動モードとして一般的に構成されます.Webkitカーネルcコード
singleInstance起動モードは非常に特殊で、activityは自分のタスクスタックで実行され、このタスクスタックには1つのインスタンスしか存在しません.
携帯電話のオペレーティングシステム全体にactivityが1つしか存在しないことを保証するにはsingleInstance を使用します.
アプリケーションシーン:電話ダイヤルインタフェース
縦横画面切り替えのライフサイクル
デフォルトでは、縦画面切り替え、現在のactivityを破棄し、新しいactivityを再作成します.
ショートカットキーctrl+F 11
ゲームなどの特殊なアプリケーションでは、縦横切り替えactivityを破棄して再作成する必要はありません.縦横切り替えのライフサイクルを無効にします.
   1. 横書き死android:screenOrientation=「landscape」(横書き風景)android:screenOrientation=「portrait」(縦書き肖像)
システムの環境を縦画面の切り替えに敏感にしないようにします.
 android:configChanges="orientation|screenSize|keyboardHidden"

Activityをオンにして戻り値を取得する
AインタフェースからBインタフェースを開き、Bインタフェースが閉じたときに、Aインタフェースにデータを返します.
手順:1.Activityをオンにして戻り値を取得
    startActivityForResult(intent, 0);

新しくオープンしたインタフェースでデータを設定する論理
Intent data = new Intent();
data.putExtra("phone", phone);
//        ,         
setResult(0, data);
finish();//      activity,      
を実現する.
オープン者activityでの実装方法onActivity Result(int requestCode,int resultCode,Intent data)は、dataによって返されるデータを取得する.
要求コードと結果コードに基づいてビジネスロジックを決定する.