0

私はアンドロイドの初心者です。ボタンをクリックすると、選択したアプリを強制終了して、特定の(実行中の)アプリケーションまたは選択したアプリケーションを閉じるか強制終了します。私はそれが可能であることを知っています。しかし、それを解決する方法。サンプル UI は
http://answers.oreilly.com/index.php?app=core&module=attach§ion=attach&attach_rel_module=post&attach_id=555
です。いくつかのコードを使用しようとしています。ただし、すべてのコードを使用して、アクティビティのみを閉じることができます。クローズドアプリケーションではありません。いくつかのスタックオーバーフローの回答を参照してみてください。しかし、私は何も明確に理解していません。私のコードは

finish();
System.exit(0);
Intent i = new Intent();
i.setAction(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_HOME);
startActivity(i);
android.os.Process.killProcess(android.os.Process.myPid());

あなたの回答に返信してください。コメントは私にとって貴重です。ありがとう。

4

2 に答える 2

1

私はそれが可能であることを知っています。

しかし、あなたの意志ではありません。

android.os.Process.killProcess(android.os.Process.myPid());

このメソッドに関するドキュメントからのメモ:

この API を使用すると、PID に基づいて任意のプロセスを強制終了するように要求できますが、カーネルは、実際に強制終了できる PID に標準的な制限を課します。通常、これは、呼び出し元のパッケージ/アプリケーションを実行しているプロセスと、そのアプリによって作成された追加のプロセスのみを意味します。共通の UID を共有するパッケージは、互いのプロセスを強制終了することもできます。

については、この回答をおsystem.exit(0)読みください。そして、それを心に留めておいてください。

についてfinish()ドキュメントには次のことが明確に記載されています。

"アクティビティが完了し、閉じる必要がある場合にこれを呼び出します。 "

要約すると、タスクキラーを作ろうとしないでください。Android OS はそれを完璧に処理します。それに干渉しないでください。

ホイールは発明され、完全に使用されています。再発明しないでください。

これを読んでください。Android はタスク キラーを必要としないことを理解する必要があります。ググると、そのような記事がたくさん見つかります。

于 2012-06-12T06:23:41.387 に答える
0

killProcessの代わりにアプリケーションの再起動を使用する

ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
am.restartPackage("YOUR_PACKAGE_NAME");

restartPackageは、killProcessメソッドのラッパーです。

restartPackageメソッドを使用するには、以下の権限を使用してください

<uses-permission android:name="android.permission.RESTART_PACKAGES" /> 
于 2012-06-12T06:34:27.477 に答える