以下のコードでは、チェックしたすべてのアプリケーションを強制終了 (forcestop) したいのですが、アプリケーションを再起動すると、これらの強制終了されたアプリケーションの名前が再び表示されます。
彼らが本当に殺されているかどうかはわかりません。なぜそうなのか?
kill.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
//Killing selected Apps
String savedapp;
int code = 0;
int count = lv.getAdapter().getCount();
for (int j = 0; j < count; j++)
{
if (lv.isItemChecked(j))
{
Intent ints = new Intent(Intent.ACTION_MAIN, null);
ints.addCategory(Intent.CATEGORY_LAUNCHER);
savedapp = lv.getItemAtPosition(j).toString();
nm.removeAll(nm);
// this.l = getListView();
// l.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
PackageManager pm = getApplicationContext().getPackageManager();
List<ResolveInfo> intentlist = pm.queryIntentActivities(ints, PackageManager.PERMISSION_GRANTED);
ActivityManager am1 = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> processes = am1.getRunningTasks(Integer.MAX_VALUE);
if (processes != null)
{
for (int i = 0; i < processes.size(); i++) {
String packageName = processes.get(i).topActivity
.getPackageName();
RunningTaskInfo temp = processes.get(i);
try
{
pName = (String) pm.getApplicationLabel(pm
.getApplicationInfo(packageName,
PackageManager.GET_META_DATA));
}
catch (NameNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
// int f = 0;
if (savedapp.equals(pName)) {
// finish(pm.);
code = intentlist.get(i).activityInfo
.hashCode();
finishActivity(code);
am1.killBackgroundProcesses(packageName);
am1.restartPackage(packageName);
android.os.Process.killProcess(temp.id);
finishActivity(temp.id);
// Toast.makeText(this, packageName,
// Toast.LENGTH_SHORT).show();
//f = 1;
}
else
{
nm.add(pName.trim());
}
}
}
}
}
}
};//kill button close