0

これは少しばかげた質問かもしれませんが、各ステップを実装する Android ライフサイクルの最適な時期はいつでしょうか? 私のゲームの流れは次のとおりです。

  1. onCreate の前: JSON ファイルに格納されたデータは、ゲームの開始時に文字列リストに解析されます。
  2. onCreate: 基本的な UI が生成されます
  3. onStart/onResume: ゲーム開始: リストからランダムに選択された項目、ユーザーが対応する項目を選択して続行
  4. ユーザーが正しければ、リストから別の項目が選択されます。10回発生
  5. 10 個のアイテムの後、ゲームは終了し、スコアがユーザーに表示されます

これは良い習慣と見なされますか?ライフサイクルのステップについて少し混乱しています

4

2 に答える 2

1

これは、Android アプリのライフサイクルをより理解するのに役立つかもしれません。以下はそのサイトからの引用です。

前のセクションで説明したように、アクティビティのライフサイクルには 4 つの状態と 3 つの有効期間があります。独自のコード ロジックを監視してアクティビティに追加する場合は、android.app.Activity クラスで提供される次の 7 つの基本的なコールバック メソッドを使用できます。

  • onCreate() - アクティビティが最初に作成されたときに呼び出されます。ビューの作成、リストへのデータのバインドなど、通常の静的設定はすべてここで行う必要があります。このメソッドは、アクティビティの以前に凍結された状態があれば、それを含むバンドルも提供します。onCreate() の後には常に onStart() が続きます。

  • onRestart() - アクティビティが停止された後、再び開始される前に呼び出されます。onRestart() の後には常に onStart() が続きます。

  • onStart() - アクティビティがユーザーに表示されるようになったときに呼び出されます。onStart() の後には、アクティビティがフォアグラウンドになる場合は onResume() が続き、アクティビティが非表示になる場合は onStop() が続きます。

  • onResume() - アクティビティがユーザーとの対話を開始するときに呼び出されます。この時点で、アクティビティはアクティビティ スタックの一番上にあり、ユーザー入力がそこに送られます。onResume() の後には常に onPause() が続きます。

  • onPause() - システムが前のアクティビティの再開を開始しようとしているときに呼び出されます。これは通常、保存されていない変更を永続データにコミットしたり、アニメーションやその他の CPU を消費する可能性があるものを停止したりするために使用されます。このメソッドが戻るまで次のアクティビティが再開されないため、このメソッドの実装は非常に迅速である必要があります。onPause() の後には、アクティビティが前面に戻る場合は onResume() が続き、アクティビティがユーザーから見えなくなった場合は onStop() が続きます。

  • onStop() - 別のアクティビティが再開され、このアクティビティをカバーしているため、アクティビティがユーザーに表示されなくなったときに呼び出されます。これは、新しいアクティビティが開始されているか、既存のアクティビティがこのアクティビティの前に移動されているか、またはこのアクティビティが破棄されているために発生する可能性があります。onStop() の後には、このアクティビティがユーザーと対話するために戻ってくる場合は onRestart() が続き、このアクティビティがなくなる場合は onDestroy() が続きます。

  • onDestroy() - アクティビティが破棄される前に受け取る最後の呼び出し。これは、アクティビティが終了している (finish() が呼び出された) ため、またはシステムがスペースを節約するためにアクティビティのこのインスタンスを一時的に破棄しているために発生する可能性があります。これら 2 つのシナリオは、isFinishing() メソッドで区別できます。

于 2013-02-18T21:46:43.790 に答える
0

onCreate の前にデータをどのようにプリロードしていますか? onCreate が呼び出される前に、アプリのファイルシステムを操作するための Context オブジェクトがありません。ご覧のとおり、 onCreateはコードを実行できる最初のメソッドです。

AsyncTask など、他のスレッドにデータをロードすることをお勧めします。

そう:

  1. 基本的な UI を生成する
  2. データのプリロードを開始する NOT IN MAIN THREAD
  3. データのロード後に UI を更新する
于 2013-02-18T21:53:51.220 に答える