首页 新闻 会员 周边 捐助

HarmonyOs在充电器充电,activity运行卡住问题

0
悬赏园豆:200 [已解决问题] 解决于 2023-07-06 14:40

HarmonyOs在充电器充电,特别是快充情况下。activity不会被杀死但代码不运行。代码如下:
/**
* 电量变化数据同步
*/
private class BatteryLevel implements Runnable {
@Override
public void run() {
runOnUiThread(() -> {
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
if(batteryManager==null){
batteryManager = (BatteryManager) getSystemService(BATTERY_SERVICE);
}
i = batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY);
}
}catch (Exception e){
e.printStackTrace();
}
waveText.setText(String.valueOf(i));
waveView.setWaterLevelRatio(i /100f);
//发送数据
BleProtocol.usbElectricity((byte) i,curDevice,bleDeviceBool);
if(i >=100){
waveHelper.cancel();
if(remind.isChecked()&&sgin!= i){
//防止手机先震动
TaskExecutor.executeTask(() -> {
TaskExecutor.delay(500);
if(shock.isChecked()){
Log.d(TAG, "onStatePowerDisconnected: 震动.");
Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
long[] patter = {0, 500, 0, 500};
vibrator.vibrate(patter, -1);
}
if(tips.isChecked()){
Log.d(TAG, "onStatePowerDisconnected: 提示音.");
manager.lockOn();
}
});
}
}
sgin = i;
});
}
}

scheduledThreadPool.scheduleAtFixedRate(new BatteryLevel(),5,5,TimeUnit.SECONDS);

运行后在充电器快充充模式下后台不会运行,像什么东西阻塞住了。
目前两种应急方案:
一:开启一个1像素的悬浮窗
二:将任务放入无声音乐服务中
有没有其它简单的方法?亲测单纯的Timer、ScheduledExecutorService、计时器、一分钟周期的广播,都没用。进程(活动没死)监听,是否充电的广播运行正常。一旦运行是否充电的回调将会重新运行上述周期性任务。

勤奋的小铁的主页 勤奋的小铁 | 初学一级 | 园豆:24
提问于:2021-08-03 09:18
< >
分享
最佳答案
0

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, this.getClass().getName());
mWakeLock.acquire();
关闭休眠模式

勤奋的小铁 | 初学一级 |园豆:24 | 2022-05-19 17:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册