この質問はstackoverflowにとって新しいものではないことはわかっていますが、まだ混乱しています。したがって、この質問を重複としてマークしないでください。これについて私を助けてください!
私の Android アプリには多くのアクティビティがあります。アプリがフォアグラウンドになったときに Web サービスを呼び出す必要があり、アプリがバックグラウンドに切り替わったときに別の Web サービスを呼び出す必要があります。
私の最初の調査結果は次のとおりです。
- アクティビティのライフ サイクルhttp://developer.android.com/reference/android/app/Activity.html#ActivityLifecycleを読み、上記の 2 つの Web サービスを
- onPause() = アプリがバックグラウンドに切り替わったとき
- onResume() = アプリがフォアグラウンドに切り替えられたとき。
私の活動:
protected void onPause()
{
AppUtil.trackAppBackgroundStatus(this);
super.onPause();
}
protected void onResume()
{
super.onResume();
AppUtil.trackAppForegroundStatus(this);
}
私のユーティリティクラス:
public class AppUtil
{
public static void trackAppForegroundStatus(Context theContext)
{
SharedPreferences aSharedSettings = theContext.getSharedPreferences("MyAppPreferences", Context.MODE_PRIVATE);
String aAppStatus = aSharedSettings.getString("appStatus", "");
if(!aAppStatus.equals("foreground"))
{
SharedPreferences.Editor aPrefEditor = aSharedSettings.edit();
aPrefEditor.putString("appStatus", "foreground");
aPrefEditor.commit();
trackSession(theContext, "foreground");
}
}
public static void trackAppBackgroundStatus(Context theContext)
{
SharedPreferences aSharedSettings = theContext.getSharedPreferences("MyAppPreferences", Context.MODE_PRIVATE);
String aAppStatus = aSharedSettings.getString("appStatus", "");
if(!aAppStatus.equals("background"))
{
SharedPreferences.Editor aPrefEditor = aSharedSettings.edit();
aPrefEditor.putString("appStatus", "background");
aPrefEditor.commit();
trackSession(theContext, "background");
}
}
}
trackSession メソッドは、アプリのフォアグラウンドとバックグラウンドの状態を追跡します。
欠点: 上記のように、私のアプリにはさまざまなアクティビティがあります。したがって、Page_A と Page_B があるとします。
Page_A では、onCreate() メソッド呼び出しの後、制御が onResume() に移動し、アプリがフォアグラウンドにあることを追跡します。次のページ (Page_B) に移動すると、Page_A の onPause() メソッドが呼び出され、それを追跡します。アプリがバックグラウンドに切り替わります。
すべてのアクティビティでこれを追跡したくありません..アプリがバックグラウンドに移行した場合にのみ、アプリのバックグラウンド ステータスを追跡する必要があります (つまり、ユーザーがホーム ボタンを押してアプリがバックグラウンドに切り替えられた場合のみ)。
- Androidアプリケーションがバックグラウンドで実行されているかどうかを確認してみましたが、同じことが起こります
- getRunningTasks()は私の問題を解決します。ただし、Google はおそらく ActivityManager.getRunningTasks() を使用するアプリを拒否することをお読みください。
誰でも私を案内してください。基本的に、2 つの Web サービスを呼び出す必要があります。1 つはアプリがフォアグラウンドになったとき、もう 1 つはアプリがバックグラウンドに切り替わったときです。
アプリに関してこれらの呼び出しを行うことができない場合、上記のコードを更新してそれらを処理するにはどうすればよいですか。
助けてください。