【问题标题】:Android app that kills background processes to save power杀死后台进程以节省电量的 Android 应用程序
【发布时间】:2013-07-10 05:58:18
【问题描述】:

我正在编写一个 Andoid 应用程序,以便当电池寿命低于某个水平时,会出现一个对话框,其中包含如何保存电池的选项。其中一个选项是使用ActivityManager.killBackgroundProcesses() 关闭所有后台应用程序/服务(进程)。代码如下:

    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() 并关闭后台进程的按钮时,一些应用程序(电子邮件、谷歌地图)会立即开始重新启动过程。如何更改我的代码以使这些应用程序在重新打开之前保持关闭状态?另外,这种方法在省电方面是否明智,还是我以错误的方式进行攻击?

【问题讨论】:

    标签: android process background-process kill kill-process


    【解决方案1】:

    我认为这不是处理问题的正确方法。 这些应用程序具有广播接收器,这意味着它们会在发生任何事情时重新启动服务(即插入交流电/打开 WiFi),我认为没有办法在没有 root 的情况下停止它,并且实际上禁用了广播接收器。 您可以制作每 5 分钟杀死一次的东西,但这对电池不太友好。

    【讨论】:

      【解决方案2】:

      我认为每次都强制关闭地图应用程序不是一个好主意,我认为这是 Android 中的一个错误..

      其中一个答案如下: " 实际上,当您在手机 Gmail 应用程序的“帐户设置”下的“常规同步设置”中选中“背景数据”时,地图总是会运行。不幸的是,为了让您的电话服务提供商提供电话和短信服务,同步后台数据是必要的(尽管如果没有勾选此项,互联网访问仍然可以工作)。取消选中此框将从正在运行的应用程序(以及任何其他需要它的应用程序)中删除地图,从而提高电池使用时间并加快手机速度。但是,如果您想拨打电话、发短信或使用需要后台同步的应用程序,则必须勾选此项。如果您只想浏览网络...取消选中它。目前没有其他合法的解决方案。希望这对您有所帮助...

      "

      查看此问题 (https://code.google.com/p/android/issues/detail?id=10251)

      【讨论】:

      • 这不是错误。大多数应用程序都有broadcastReceivers,由Android自动重启。考虑到 android 允许您在不重新启动的情况下杀死所有 broadcastReceivers。然后重要的接收器,例如 TIME_TICK ,BATTERY_LOW 接收器也将被杀死,这将造成严重破坏。 BroadcastReceiver 非常重要,并且有重要的任务,所以永远不会被 android 杀死。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多