我正在編寫Andoid應用程序,以便在電池壽命低於某個級別時出現一個對話框,其中包含如何保存電池的選項。其中一種選擇是使用ActivityManager.killBackgroundProcesses()
關閉所有後臺應用程序/服務(進程)。代碼如下所示:殺死後臺進程以節省電量的Android應用程序
public void TaskKiller(View view){
List<ApplicationInfo> packages;
PackageManager pm;
pm = getPackageManager();
packages = pm.getInstalledApplications(0);
ActivityManager mActivityManager = (ActivityManager)this.getSystemService(Context.ACTIVITY_SERVICE);
for (ApplicationInfo packageInfo : packages) {
mActivityManager.killBackgroundProcesses(packageInfo.packageName);
}
}
然而,當我點擊調用TaskKiller()和關閉後臺進程的按鈕,一些應用程序(電子郵件,谷歌地圖)的立即開始重新啓動的過程中他。如何更改我的代碼,以便這些應用程序保持關閉狀態,直到它們重新打開爲止?此外,這種方法在節能方面是否明智,還是我以錯誤的方式攻擊?
這是不是一個錯誤。大部分的應用程序都有'broadcastReceivers'這是由Android的自動重新啓動。考慮到機器人允許你在不重新啓動的情況下殺死所有的'broadcastReceivers',然後重要的接收器如TIME_TICK,BATTERY_LOW接收器也將被殺死,這將造成一場浩劫。 –