Androidアプリケーション開発の基礎その6:ページジャンプとデータ転送
5818 ワード
2番目のActivityの作成インベントリファイルにactivityタグ を構成する必要がある.ラベルにこのサブノードがある場合、システムにショートカットアイコン が複数作成されます.アプリケーションは、デスクトップに複数のショートカットアイコンを作成できます. activityの名前、アイコンとアプリケーションの名前、アイコンが異なる .
Activityのジャンプ
ActivityのジャンプにはIntentオブジェクトを作成する必要があります.intentオブジェクトのパラメータを設定してActivityをジャンプするように指定します.
Activityのパッケージ名とクラス名を設定することで、明示的な意図と呼ばれるジャンプを実現
指定された動作でジャンプを実現することを暗黙的意図と呼ぶ
明示的な意図.同じ項目の下の別のActivityにジャンプし、そのActivityのバイトコードを直接指定すれば になります.他のアプリケーションのActivityにジャンプするには、アプリケーションのパッケージ名とActivityのクラス名 を指定する必要があります.
暗黙的意図.暗黙的に指定Activity にジャンプする. Activityを暗黙的に起動するには、インベントリファイルのactivityノードにintent-filterサブノード action指定アクション(カスタマイズ可能、システム付属) data指定データ(操作内容) categoryカテゴリ(デフォルトカテゴリ、トップボックス、車載パソコン) 暗黙的にActivityを起動することを意図しており、intentに上記の3つの属性を設定する必要があり、その値は、リストファイル内の3つの属性の定義と一致する必要がある . intent-filterノードとそのサブノードは同時に複数定義ことができ、暗黙的な起動時にいずれかと一致するだけで が可能である.
setDataで渡されたデータの取得
明示的意図と暗黙的意図の適用シーン同じアプリケーションでActivity を起動するために明示的に意図する.異なるアプリケーションでActivityを起動するための暗黙的な意図 システムに複数のActivityのintent-filterが同時にあなたのintentと一致している場合、システムはダイアログボックスを表示し、すべての一致するActivityをリストし、ユーザーがどの を起動するかを選択します.
Activityジャンプ時のデータ転送 ActivityがIntentを介して起動する場合、Intentオブジェクトを介してターゲットActivity にデータを携帯することができる.ターゲットActivityからデータを取り出す .
Activityライフサイクル
void onCreate() Activityは作成済み void onStart() Activityは既に画面に表示されているが、フォーカス は得られていない.
void onResume() Activityはフォーカスを得る、ユーザーと対話できる .
void onPause() Activityはフォーカスを失い、ユーザーと対話できなくなったが、 が依然として見られる.
void onStop() Activityは見えず、バックグラウンド に入る
void onDestroy() Activityが破棄された void onRestart() 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を破棄して再作成する必要はありません.縦画面切り替えのライフサイクルを無効にします.縦横の画面にandroid:screenOrientation="landscape"android:screenOrientation="portrait"と書くは、システムの環境に敏感な縦画面の切り替えを行わないようにします.
Activityをオンにして戻り値を取得する
AインタフェースからBインタフェースを開き、Bインタフェースが閉じたときに、Aインタフェースにデータを返します.
手順:1.Activityをオンにして戻り値を取得新しくオープンしたインタフェースの中でデータを設定するロジック を実現する.オープン者activityでの実装方法onActivity Result(int requestCode,int resultCode,Intent data)は、dataによって返されるデータ を取得する.は、要求コードおよび結果コードに基づいてトラフィックロジック を決定する.
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
Activityのジャンプ
ActivityのジャンプにはIntentオブジェクトを作成する必要があります.intentオブジェクトのパラメータを設定してActivityをジャンプするように指定します.
Activityのパッケージ名とクラス名を設定することで、明示的な意図と呼ばれるジャンプを実現
指定された動作でジャンプを実現することを暗黙的意図と呼ぶ
明示的な意図.
Intent intent = new Intent();
intent.setClass(this, SecondActivity.class);
startActivity(intent);
Intent intent = new Intent();
//
intent.setClassName("com.android.dialer", "com.android.dialer.DialtactsActivity");
startActivity(intent);
暗黙的意図.
Intent intent = new Intent();
//
intent.setAction(Intent.ACTION_DIAL);
startActivity(intent);
<intent-filter >
<action android:name="com.itheima.second"/>
<data android:scheme="asd" android:mimeType="aa/bb"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
を設定する必要があります.setDataで渡されたデータの取得
// Activity intent
Intent intent = getIntent();
Uri uri = intent.getData();
明示的意図と暗黙的意図の適用シーン
Activityジャンプ時のデータ転送
Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra("maleName", maleName);
intent.putExtra("femaleName", femaleName);
startActivity(intent);
Intent intent = getIntent();
String maleName = intent.getStringExtra("maleName");
String femaleName = intent.getStringExtra("femaleName");
Activityライフサイクル
void onCreate()
void onResume()
void onPause()
void onStop()
void onDestroy()
シーンの操作
完全ライフサイクル(entire lifetime)
onCreate-->onStart-->onResume-->onPause-->onStop-->onDestory
ビジュアルライフサイクル(visible lifetime)
onStart-->onResume-->onPause-->onStop
フロントライフサイクル(foreground lifetime)
onResume-->onPause
Activityの4種類の起動モード
各アプリケーションにはActivityタスクスタックがあり、起動したActivityを格納します.
Activityの起動モード、タスクスタックの配置を変更する
縦横画面切り替えのライフサイクル
デフォルトでは、縦画面切り替え、現在のactivityを破棄し、新しいactivityを再作成します.
ショートカットキーctrl+F 11
ゲームなどの特殊なアプリケーションでは、縦画面切り替えactivityを破棄して再作成する必要はありません.縦画面切り替えのライフサイクルを無効にします.縦横の画面に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,