【发布时间】:2020-10-19 12:36:28
【问题描述】:
我正在构建一个 Android 应用程序,我需要在特定的时间间隔进行短暂的振动,以防满足某些条件。
问题是,当满足这些条件时,即使我将设备设置为振动 2 秒,它有时会振动超过 10 秒,有时振动不会停止,直到设备重新启动。 另外,我注意到处理程序中的可运行对象没有以正确的时间间隔运行。它应该是每 interval 秒,但通常需要更多时间。
这是一个例子:
fullBatteryHandler.postDelayed(new Runnable() {
@Override
public void run() {
if(isBatteryFull){
Log.d("vibrate", "full battery");
v.vibrate(VibrationEffect.createOneShot(2000, VibrationEffect.DEFAULT_AMPLITUDE));
}
fullBatteryHandler.postDelayed(this, interval * 1000);
}
}, 1000);
你知道为什么会这样吗?
编辑:我通过添加 WakeLock 解决了这个问题。
【问题讨论】:
-
也许处理程序被多次调用?您是否在 logcat 中多次看到
full battery? -
好吧,当它检查电池是否充满时,我每隔 interval 秒就会看到一次。但我认为它应该是这样工作的。起初我遇到了这个问题,处理程序被调用了几次,我认为这就是问题所在。但是现在只调用了一次,问题依然存在。
标签: android android-handler android-vibration