ビデオレッスン:https://edu.csdn.net/course/play/7621
この章の内容
第1潔 アクティビティライフサイクル
セクション2リストアクティビティ
この章の目的
アクティビティのライフサイクルをマスターする
ライフサイクルコールバックメソッドの実行時間に精通している。
ライフサイクル手法の適用に精通している。
ListActivityのアプリケーションに精通している。
アクティビティ紹介
l Androidアプリケーションの場合、Activityクラスはそのコアコンポーネントです。多くの場合、アプリケーションでは、画面表示ごとにアクティビティを定義して実装します。
たとえば、単純なゲームアプリケーションには、次の5つのアクティビティが含まれる場合があります。
活動のライフサイクル
Androidオペレーティングシステムでは、複数のアプリケーションを同時に実行できますが、フォアグラウンドに表示できるアクティビティは1つだけです。
Androidオペレーティングシステムは、実行中のすべてのアクティビティオブジェクトを追跡し、これらのオブジェクトをアクティビティスタックに配置します。新しいアクティビティが開始されると、スタックの最上位のアクティビティが一時停止され、新しいアクティビティがスタックの最上位に配置されます。この新しいアクティビティが完了すると、スタックから削除され、前のアクティビティがスタックの一番上に戻ります。
lスタンドアロンアプリケーションとは異なり、アクティビティには主な機能がありません
lActivityは、ライフサイクルのさまざまな段階でさまざまなコールバック関数を実行します
l一般的に使用されるコールバック関数は次のとおりです。
ØonCreate():ユーザーインターフェイスの関連コンテンツを初期化します
ØonStart()
ØonResume():アクティビティデータを初期化して受信します
ØonPause():アクティビティデータを停止、保存、解放します
ØonStop()
ØonRestart()
lActivityは、再開、一時停止、および停止の状態にのみ留まります
l他の状態は、コールバック関数が実行された直後に次の状態になります
••
デスクトップアイコンで開始されるuActivityは、<intent-filter>を使用して次のように宣言する必要があります。
<activity android:name = "。MainActivity“ android:label =" @ string / app_name ">
<インテントフィルター>
<action android:name = "android.intent.action.MAIN" />
<category android:name = "android.intent.category.LAUNCHER" />
</ intent-filter>
</ activity>
MAINまたはLAUNCHERのアクティビティがアプリケーションで定義されていない場合、アプリケーションのアイコンはメインインターフェイスとアプリケーションメニューに表示されません。OnCreateはアクティビティ全体の操作中に1回だけ実行されるため、ユーザーインターフェイス関連のコンテンツはonCreateで初期化する必要があります。
実行中のアプリケーションは、次の状況が発生すると一時停止(onPauseを実行)します。たとえば、半透明のアクティビティを開くと、バックグラウンドサービスがダイアログボックスをポップアップし、現在のアクティビティが部分的に隠されます。
アクティビティがバックグラウンドからフォアグラウンドに再び切り替えられたとき(onResumeを実行)
アプリケーションが一時停止状態になると、onPauseコールバック関数が実行されます。onPauseで適切なリソース解放タスクを実行する必要があります。たとえば、カメラリソースを解放してビデオの再生を停止しますが、現在の状態を長期間保存するなど、onPauseで時間のかかる操作を実行しないでください。 CPUを消費するアクション
現在のアクティビティは、次の条件(onPause-> onStop)が原因で停止することがよくあります。ユーザーは、ホームボタンを押してメインインターフェイスに入ります。
現在のアクティビティを完全にカバーする別のアクティビティが開始されます
実行中、別のアプリケーションが終了したとき、またはユーザーがデスクトップアイコンを選択して再起動したときに、着信があります
onRestart、onStart、onResumeは順番に実行されます
すべてのリソースは、uonStopメソッドで可能な限り解放する必要があります
極端な場合、onDestroyが実行されないことがあるため
onPauseはこの前に実行されますが、時間のかかる操作はここに記述する必要があります
アクティビティが再開したとき
onRestartは実行されますが、リソースを復元する操作はonStartに書き込む必要があります
onStartは、アクティビティが初めて開始されたときにも実行されるためです
アクティビティを再作成する
時々、システムは十分なメモリを取得するためにバックグラウンドアクティビティを破棄します
たとえば、水平画面と垂直画面を切り替える場合
破棄されると、システムはいくつかの情報を保存します(onSaveInstanceStateを実行します)
必要な情報はプログラムを通じて保存することができます
この情報は、アクティビティが再開されたときに返されます
• onRestoreInstanceStateとonCreateはこの情報を取得します
• onCreateは、最初に作成されたときにも実行されます
•データ回復タスクは、onCreateでより適切に記述される必要があります
時々、システムは十分なメモリを取得するためにバックグラウンドアクティビティを破棄します
たとえば、水平画面と垂直画面を切り替える場合
破棄されると、システムはいくつかの情報を保存します(onSaveInstanceStateを実行します)
このとき、プログラムを通じて必要な情報を保存することができます
この情報は、アクティビティが再開されたときに返されます
この時点で、onRestoreInstanceStateとonCreateがこの情報を取得します
lonCreateは、最初に作成されたときにも実行されます
したがって、データ回復タスクはonCreateでより適切に記述される必要があります
ListActivityは、デフォルトでListViewを含むアクティビティです。
ListActivityを継承するクラスを記述して、ListViewを含むアクティビティを取得します
setListAdapterメソッドは、ListView用のアダプターを提供できます。
getListViewを介してListViewオブジェクトを取得します
setEmptyViewメソッドを呼び出して、ListViewが空のときに表示ビューを設定します
ListActivityはデフォルトでOnItemClickListenerを登録します
イベントを処理する必要がある場合は、onListItemClickメソッドをオーバーライドするだけで済みます。
パブリッククラス MyListActivityはListActivityを拡張します{
@オーバーライド
protectedvoid onCreate (Bundle savedInstanceState ){
super.onCreate (savedInstanceState );
List <String> list = new ArrayList <String>();
list.add ( "北京");
list.add ( "上海");
list.add ( "広州");
ArrayAdapterアダプター=新しいArrayAdapter (this、android.R.layout.simple_list_item_1、list);
setListAdapter (adapter);
}
}
好みの役割
uPreferencesは、アプリケーションの構成オプションを参照します
uは主に機能設定を構成するために使用されます
Ø通常、使用する/使用しない、はい/いいえに設定
Øまたは、名前、オプションなどを設定します。
uほとんどすべてのアプリケーションは構成を使用する必要があります
u構成オプションのインターフェース機能は類似しています
Ø右の例に示すように
uAndroidは、構成オプションの基本クラスを提供します
ØPreferenceActivity