onPause()を使用すると、アクティビティがバックグラウンドになるかどうかを確認できます。私の問題は、このアクティビティから別のアクティビティに行っても、onPause()は毎回呼び出されるということです。ホームキーを押してアプリケーションを検出する方法は最小限に抑えられていますか?
私の主な問題は、ホームボタンを押してアプリケーションを最小限に抑えると、タスクマネージャからアプリケーションを削除したいということです。このコードは、アプリケーションがバックグラウンドになってもonPause()を使用しないときに各アクティビティに書き込みます。
私のコードスニペットは以下の通りです - >
@Override
public void onPause() {
if (isBackgroundRunning(this)){
ExitActivity.exitApplication(getApplicationContext());
}
super.onPause();
}
public static boolean isBackgroundRunning(Context context) {
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> runningProcesses = am.getRunningAppProcesses();
for (ActivityManager.RunningAppProcessInfo processInfo : runningProcesses) {
if (processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
for (String activeProcess : processInfo.pkgList) {
if (activeProcess.equals(context.getPackageName())) {
//If your app is the process in foreground, then it's not in running in background
return true;
}
}
}
}
return true;
}
ExitActivityは、タスクマネージャからアプリを削除するために使用されています。
public class ExitActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
finish();
}
public static void exitApplication(Context context) {
Intent intent = new Intent(context, ExitActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NO_ANIMATION | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
context.startActivity(intent);
}
}
私は、これに関連する質問のほとんどを見たが、解決策を見つけることができません。私を助けてください。ありがとうございます。
ソリューションが見つからないため、解決策が見つからないため、セキュリティ上の理由からホームボタンイベントを待ち受けません。とにかく、あなたはなぜあなたのアプリを殺す必要がありますか? – tyczj
@tyczj実際に私はバックエンドサービスから2時間のセッション管理を使用していたので、アプリが最小化され、3時間後またはそれ以降がフォアグラウンドになり、アプリが最小化され、ユーザーがすべての詳細を記入して、彼がセッションを持っているWebサービスの呼び出しが無効である後に提出してください。 –
次に、共有環境設定で有効期限のタイムスタンプを作成し、onResumeごとに現在の時刻+ 2時間に更新してから、onCreateで時刻を確認してください。その過去の時間が – tyczj