2

私は以下のコードを持っています:

package com.example.killall;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
//import android.widget.TextView;
import android.app.ActivityManager;

public class MainKill extends Activity {

private Button BprocessesKill ;
//private TextView processesKill;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_kill);

    final ActivityManager am=(ActivityManager)     getSystemService("SYSTEM_ACTIVITY");

    BprocessesKill=(Button) this.findViewById(R.id.BkillProcesses);
    //processesKill=(TextView) this.findViewById(R.id.killProcesses);



    BprocessesKill.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            am.killBackgroundProcesses(getPackageName());

        }
    });

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main_kill, menu);
    return true;
}

}

ボタンを押してすべてのバックグラウンドプロセスを強制終了するだけです。このコードで発生する問題は、ボタンを押すと次のメッセージが表示されることです。残念ながら、KillAll(これは私のアプリの名前です)が停止しました。何を変更すればよいですか?

4

3 に答える 3

6
  1. 表示されるメッセージは、アプリがクラッシュしたことを示しています。その理由を知るには、LogCatを調べる必要があります。これは、Androidデベロッパーガイドに記載されています。
  2. すべてのバックグラウンドプロセスを強制終了する理由を説明してください。これを行う適切な理由は考えられません。人々は「タスクキラー」または「アプリキラー」がパフォーマンスを向上させると主張し続けますが、この態度は本当の問題、つまり不十分に書かれたアプリを無視します。タスクキラーが役立つと私たちが主張し続ける限り、ユーザーは不要なサービスなどを実行したままにするアプリを使い続けます。ユーザーにタスクキラーの使用を強制することは、シロアリの問題に対処するために、一度に1匹のシロアリを殺すようなものです。本当の答えは、すべてのシロアリを駆除することです。

つまり、すべてのバックグラウンドプロセスを強制終了する方法を教えてくれる人は誰でも、あなたに不利益をもたらし、Androidコミュニティに不利益をもたらします。

于 2012-12-12T20:03:03.360 に答える
6

このコードを使用して、自分のプロセス (アプリ) を強制終了します。

    android.os.Process.killProcess(android.os.Process.myPid());
于 2012-12-12T20:47:31.167 に答える
5

次のコードを使用できます。

List<ApplicationInfo> packages;
    PackageManager pm;
    pm = getPackageManager();
    //get a list of installed apps.
    packages = pm.getInstalledApplications(0);

    ActivityManager mActivityManager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);

   for (ApplicationInfo packageInfo : packages) {
        if((packageInfo.flags & ApplicationInfo.FLAG_SYSTEM)==1)continue;
        if(packageInfo.packageName.equals("mypackage")) continue;
        mActivityManager.killBackgroundProcesses(packageInfo.packageName);
   }  

ソース

アプリを強制終了することは非常に危険であることを覚えておいてください。何をしているのか正確にわからない場合は、このコードを使用しないでください。

于 2012-12-12T20:15:04.453 に答える