非常电池友好的应用程序/小部件(Android)

Posted

技术标签:

【中文标题】非常电池友好的应用程序/小部件(Android)【英文标题】:Very Battery Friendly App/Widget(Android) 【发布时间】:2011-07-06 11:26:47 【问题描述】:

我一直在看这里和There,我变得很好奇。

我想知道是否有任何东西通常适用于 android 应用程序,以确保它们不会变得耗电。例如通常添加的部分代码以确保应用在退出时一直关闭?

为了确保我的应用/小部件不会耗尽电池寿命,我可以采取哪些最佳做法(代码方面)。

例如,假设我的应用是一个信息丰富的应用,带有一点用户交互或一个简单的小部件(不是游戏等)

【问题讨论】:

【参考方案1】:

我认为最好的做法是一种致命的赠品:“不要犯愚蠢的错误”。当然,这看起来很硬。

一路关闭不是您需要考虑的事情。您应该尽可能少地占用内存。不是因为这会消耗电池,而是你使用的越少,内存中的程序就越多(所以关闭的程序越少!)并且可以毫不费力地启动。重新加载东西很昂贵,将其保存在内存中则不然! 请注意,服务(后台进程、警报等)的成本很高,因为它实际上可以在不可见时执行某些操作。请确保这些已关闭。 应该存在的后台内容(更新、加载等)应尽可能少地使用资源,就像正常使用一样 正常使用:使用很少的资源,如网络、位置等。它有点像你想象的那样工作。此外,您使用的内存越少,内存中的其他程序就越多,电池寿命就越短。

【讨论】:

【参考方案2】:

如果您调查电池消耗,您会发现大部分电量都被 wifi、蓝牙、启用 GPS、系统和显示器消耗。因此,在开发应用程序时,用户应该检查他是如何使用资源的。也调用完成() 退出应用程序时释放一些资源(内存)

【讨论】:

调用finish() 退出您的应用,从长远来看,最终会消耗更多的电池电量,而不是允许Android 管理应用。这是因为下次启动应用程序时,它必须重新加载到内存中,并且任何特定于应用程序的初始化都需要再次进行,而不仅仅是重新激活。 @RivieraKid 您正在假设应用程序将被重新加载。这可能不适用于您开发的每个应用程序。如果应用程序不经常使用,将其加载到 RAM 仅意味着最频繁。用过的应用可以换成它。 @Mister - 虽然这种特殊的边缘情况似乎支持“退出”您的应用程序,但事实是 Android 内存管理器已经维护了一个 LRU 应用程序列表,并且更愿意保留记住您最常使用的那些应用程序。到目前为止,我想说的是,如果您正在编写一个打算很少使用的应用程序(或者任何应用程序,真的,即使我每天都使用它),但是当您使用它时,资源管理如此糟糕以至于你需要猜测操作系统并尝试手动释放资源,那么这不是我想要命名的应用程序。

以上是关于非常电池友好的应用程序/小部件(Android)的主要内容,如果未能解决你的问题,请参考以下文章

Android BroadcastReceiver不更新小部件

Android BroadcastReceiver没有更新Widget

强制 Android 小部件更新

Android:BatteryLevel 小部件未更新

屏幕打开/关闭时如何更新 Android 小部件?

电池小部件不更新