gpt4 book ai didi

android - 禁用电池百分比更新

转载 作者:搜寻专家 更新时间:2023-11-01 09:09:00 27 4
gpt4 key购买 nike

我有一项执行后台更新的服务。

我想为用户提供在电池百分比达到特定水平时禁用更新的选项。

根据我的研究,我将在我的服务类的 onCreate 方法中使用接收器,例如:

 public class MainService extends Service  
{
@Override
public void onCreate()
{
this.registerReceiver(this.BatInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
}

private BroadcastReceiver BatInfoReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context arg0, Intent intent) {
int level = intent.getIntExtra("level", 0);
}
};
}

我假设最佳做法是让服务保持运行状态,检查服务中的电池电量,而不是根据百分比执行 CPU 密集型代码?

我实际上不需要根据电池百分比停止服务本身并重新启动它?

更新:

这似乎是一个更好的解决方案,但不是 100% 确定。我在 AndroidManifest 中注册了一个 BroadcastReceiver:

<receiver android:name="BatteryReceiver" /> 

然后创建了一个BroadcastReceiver:

 public class BatteryReceiver extends BroadcastReceiver 
{
@Override
public void onReceive(final Context context, final Intent intent)
{
final int currentBatteryPercent = intent.getIntExtra("level", 0);
final int disableBatteryPercent = Integer.parseInt(PreferenceManager.getDefaultSharedPreferences(context).getString("batteryPercent", 0);

//AlarmReceiver is the service that performs the background updates
final ComponentName component = new ComponentName(context, AlarmReceiver.class);

if (currentBatteryPercent < disableBatteryPercent)
{
context.getPackageManager().setComponentEnabledSetting(component, PackageManager.COMPONENT_ENABLED_STATE_DISABLED , PackageManager.DONT_KILL_APP);
}
else
{
context.getPackageManager().setComponentEnabledSetting(component, PackageManager.COMPONENT_ENABLED_STATE_ENABLED , PackageManager.DONT_KILL_APP);
}
}
}

最佳答案

没错。您通常要做的是为更新安排一些广播 Intent (可能通过 AlarmManager)。当您收到电池电量低的通知时,您会将其存放在您的服务中,然后在进行更新之前,检查以确保电池电量不会太低。 here是观看电池电量的好教程。在处理此 Intent 时,您不应该做太多事情,只需将电池电量保持在某个位置并(在进行更新之前)确保它适本地“充满”。

您的更新是停止应用程序的一种非常糟糕的方式。通常,要求包管理器停止您的组件与其说是一种解决方案,不如说是一种黑客攻击。相反,您应该将一些代码移动到实际执行更新的组件中,并在那里存储/更新电池信息的信息。在进行更新之前,您会检查电池电量并且不要继续,除非它处于您觉得可以更新应用程序的水平。使用广播接收器很好,但您需要将级别存储在某个地方(可能是 sharedprefs)。相反,这就是为什么将接收器放在您进行更新的服务中可能是最好的原因。

关于android - 禁用电池百分比更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9760544/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com