0

私には、AlarmManagerクラス、単純なクラス、Applicationクラス、およびその他のクラスがあります。単純なクラスはによって呼び出されAlarmManager、次に単純なクラスはクラスの助けを借りて目標を達成しようとしApplicationます。アプリがバックグラウンドにあるかどうかは関係ありません。これらの3つのクラスが生きていることを確認する必要があります。

さて、私の質問は次のとおりです。アプリがバックグラウンドにある場合、Android OSはこれらの3つのクラス(AlarmManagerクラス、シンプルクラス、クラス)を破棄しますか?Application答えが「はい」の場合、使用する必要がありますServiceか?を使用する場合Service、これら3つのクラスでどのように実装する必要がありますか?

編集:

特定の時間にFacebookSDKを使用してステータスを投稿しようとしています。したがって、Alarm Managerクラスは特定の時間に単純なクラスを呼び出します。次に、シンプルクラスはクラスからデータ(セッション、メッセージなど)を取得しApplication、シンプルクラスはメッセージをユーザーのウォールに投稿します。

セッション、メッセージなどはApplication、他のアクティビティクラスのクラスに保存されます。

4

3 に答える 3

1

わかりやすくするために、いくつかのコードを示したいと思うかもしれません。を持っていない可能性がありますが、 を作成してそれをシステムのに渡すことAlarmManagerにより、呼び出されるコンポーネントの一部を登録しました。その仮定が正しければ、アラームがトリガーされた時点でアプリが実行されていない (ライブ プロセスがない) 場合、Android はアプリを作成します。そしてその過程で、コンポーネントから使用されるすべてのクラスをロードしてインスタンス化します。アプリがバックグラウンドにある場合 (プロセスがまだそこにあり、「キャッシュされている」)、Android はそのプロセスを再利用し、必要なコンポーネントを呼び出します。PendingIntentAlarmManager

于 2012-12-14T06:51:37.640 に答える
0

Android は、しばらく非アクティブ状態が続くと、すべて (ここでは「アプリ」と呼びます) を破棄します。これには、アクティビティ オブジェクトとサービスが含まれます。生き残る唯一のものは、フォアグラウンド サービスとして定義されているサービスです (新しいバージョンの Android では通知イメージが必要になるため、完全に非表示にする方法はありません)。

于 2012-12-14T07:10:26.017 に答える
-1

アクティビティがバックグラウンドにある場合 (ユーザーがホームをクリックするか、別のアクティビティをシステム コールすることにより)、onPause() が発生し、実行を継続しません。これは、アクティビティが画像をアップロードしている場合 -> アップロードを一時停止することを意味します。システムに RAM などのリソースが不足している場合、システムはアクティビティを自動的に破棄します。したがって、ダウンロード、アップロードなどの長時間のアクションを行いたい場合は、サービスを使用する必要があります。

またはActivity単位でダウンロードしたい場合は、onPause()でダウンロード状況などを保存し、onResume()でダウンロードを再開することができます。ただし、アクティビティを再開するまで、ダウンロードのプロセスは実行されません。

于 2012-12-14T04:24:34.183 に答える