0

別の従業員からアプリを「継承」したので、いくつかの変更を加える必要があります。何らかの理由で、アクティビティを開始するたびに、前のアクティビティが一時停止ではなく停止します。THIS answerを見てきましたが、私のアプリはバーコード スキャナー アプリ (カメラを使用する) ですが、他に類似点はありません。ランチャー アクティビティとその他のカメラ関連以外のアクティビティの間を移動していますが、ランチャー アクティビティが停止しています。android:launchMode="singleTask"マニフェストからその行にコメントしたからではありません 。

停止したランチャー アクティビティではなく、一時停止したランチャー アクティビティが必要な理由は、他のアクティビティからオブジェクトを追加する public static ArrayList を実装するつもりだからです。

なぜこれが起こっているのか、誰にも考えがありますか? それは私を夢中にさせています。

4

4 に答える 4

0

ドキュメントから:

protected void onPause ()

アクティビティがバックグラウンドに移行するときに、アクティビティ ライフサイクルの一部として呼び出されますが、(まだ) 強制終了されていません。onResume() に対応するものです。

アクティビティ B がアクティビティ A の前に起動されると、このコールバックが A で呼び出されます。B は、A の onPause() が戻るまで作成されないため、ここで長いことを行わないようにしてください。

このコールバックは主に、アクティビティが編集している永続的な状態を保存し、「その場で編集」モデルをユーザーに提示し、最初にこれを強制終了せずに新しいアクティビティを開始するのに十分なリソースがない場合に何も失われないようにするために使用されます。これは、次のアクティビティにできるだけ早く切り替えたり、カメラなどの排他的アクセスであるリソースを閉じたりするために、アニメーションを停止したり、CPU を大量に消費するその他のことを行うのにも適しています。

システムがより多くのメモリを必要とする状況では、リソースを再利用するために一時停止中のプロセスを強制終了することがあります。このため、この関数から戻るまでにすべての状態が保存されていることを確認する必要があります。一般に、onSaveInstanceState(Bundle) はアクティビティ内のインスタンスごとの状態を保存するために使用され、このメソッドはグローバル永続データ (コンテンツ プロバイダー、ファイルなど) を保存するために使用されます。

この呼び出しを受け取った後、通常は (次のアクティビティが再開されて表示された後に) onStop() への次の呼び出しを受け取りますが、場合によっては、停止状態を経由せずに onResume() への直接の呼び出しが行われることがあります。

派生クラスは、このメソッドのスーパー クラスの実装を呼び出す必要があります。そうでない場合は、例外がスローされます。

于 2013-07-17T07:34:47.070 に答える
0

メモリ使用量が多いため、アクティビティが中断されたと思います (カメラ、バーコード スキャン、スキャンした画像の分析など)。

Application クラスを拡張し、拡張された Application クラスに public static ArrayList を実装できます。Application クラスを拡張する方法の多くの例を見つけることができます。

于 2013-07-17T07:31:14.877 に答える