暂停不会停止我的振动器



我将我的变量'shake'声明为全局变量,然后我在ongreate内创建了新对象,然后我称之为:

@Override
public void onPause() {
    super.onPause();
    shake.cancel();
}

尽管按下主页按钮,我的手机仍然可以振动!我尝试了onstop(),同样行不通。

我的应用是这样的:倒计时10秒,在振动之后。但是问题是无法调用的,因此如果倒计时票价设置了2分钟,则用户可能会感觉到振动的位置。/p>

,因为我看不到您的其余代码,所以我会假设几件事。

假设#1

如果您的活动开放,并且倒计时开始并在10秒后到期,则手机会振动(您的活动仍然打开)。如果您进入主屏幕,则振动会停止。

假设#2

您的活动开放,倒计时开始。在10秒到期之前,您可以进入主屏幕。您的活动不可见,但电话很快就会开始振动。

如果您看到的是正确的行为。问题在于,在第二种情况下,您的shake.cancel()从onpause()访问主屏幕时,在它实际开始振动之前就被调用。shake.cancel()只能在已经振动时取消。

如果您想修复的方法(我只能假设,因为我看不到您的其余代码),则可以尝试以下操作:

private boolean mAllowShake = false;
@Override
public void onResume() {
   super.onResume();
   mAllowShake = true;
}
@Override
pulic void onPause() {
   super.onPause();
   mAllowShake = false;
   shake.cancel();
}
// wherever you are calling the shake.vibrate()
if (mAllowShake)
   shake.vibrate();

这样,当您的活动不可见并且计时器关闭时,由于mallowshake是错误的,它实际上不会振动。

如果这不是您要修复的内容,请使用更多代码和确切用例的描述来更新您的问题。希望它有帮助!

最新更新