64

この質問は一般的であり、スタック オーバーフローで何度も聞かれることを知っていますが、検索エンジンの結果の 4 ページ近くと、この問題に関するスタック オーバーフローの 20 近くの質問にアクセスした後、どれも解決または正しく回答されていないことがわかりました。

私が欲しいもの:

実行中にアプリを最近のアプリ リストに表示したいのですが、アプリを閉じると、プロセスが強制終了され、アプリケーションが最近のアプリ リストから削除される必要があります。

私が見つけたいくつかの答え:

use System.exit(0); //doesn't clear app from recents
OR
use android.os.Process.killProcess(android.os.Process.myPid()); //doesn't clear app from recents
OR
use finish() or this.finish() or Activity.finish();// doesn't clear app from recents

そして、マニフェストに以下のコードを追加するすべての回答に見られる一般的な提案の1つ:

android:excludeFromRecents //I think this is wrong approach.

アプリの実行中にユーザーがホームボタンを押したときにこれを追加した後、ユーザーは最近のアプリリストで私のアプリを見ることができないためです。

これに関する他の多くの提案がありますが、アプリケーションを閉じるタスクと最近のアプリリストからアプリケーションをクリアするタスクの両方を実行するものはありません。また、Settings>Apps>yourApp>your Application「強制停止」を求められても、アプリケーションが実行中であることを意味します。

4

6 に答える 6

20

これに関する私の試みを紹介する前に、以下の説明はアプリケーション情報での「強制停止」の可用性に対応していないことを明確にしたいと思います。Android では、実行中のプロセスがない場合でも、アプリケーションを強制停止できます。強制停止は、ブロードキャスト イベントを受信できない特定の停止状態にパッケージを置きます。

それが邪魔にならないようになったので、これについての私の安っぽい考えを続けます。その要点は、終了したいタスクを、システムが最近のアプリのリストから除外するタスクに置き換えることです。

  1. Exiterすぐに終了 するアクティビティ (と呼びます) を定義します。
    • 電話finish()してonCreate(Bundle)ください。
    • 質問からすると、OPも電話したいようSystem.exit(int)です。しかし、この回答を読んでいる他の人にとっては、通常、プロセスを強制終了する必要はありません。
    • android:theme="@android:style/Theme.NoDisplay"これにより、一連の冗長な遷移が発生するのを防ぐために使用します。
  2. 終了したいタスクで実行されるandroid:taskAffinityように設定します。Exiterまたはしないでください: デフォルトでは、 unspecifiedtaskAffinityは、すべてのアクティビティが共通の anonymous を共有するようにしますtaskAffinity
  3. 終了する場合は、次のフラグを 使用startActivity(Intent)して開始します。Exiter
    • Intent.FLAG_ACTIVITY_NEW_TASK- 同じタスクでアクティビティを開始したい場合でも、他のフラグにはこのフラグが必要です。幸いなことにtaskAffinity、システムが実際に新しいタスクを開始するのを防ぎます。
    • Intent.FLAG_ACTIVITY_CLEAR_TASK- これでタスクのすべてのアクティビティが終了します。finish()どこにでも電話する必要はありませんExiter
    • Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS- タスクは最近のアプリ リストに表示されません。終了するタスクと同じタスクであるため、このフラグはタスクをリストから削除します。

https://gist.github.com/anonymous/9884978

于 2014-03-31T03:54:15.040 に答える
12

finishAndRemoveTask();タスクバーからアプリを削除するのに役立ちました。アプリを閉じた後。

于 2016-01-08T10:43:56.537 に答える