OnPause не остановит мой вибратор

Я объявляю свою переменную 'shake' как глобальную переменную, затем я создаю новый объект внутри oncreate, затем я вызываю это:

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

мой телефон все еще может вибрировать, хотя кнопка домой нажата! Я пытался OnStop(), то же самое не работает..

мое приложение выглядит так: обратный отсчет 10 секунд, после этого вибрирует... но проблема в том, что пауза не может быть вызвана, поэтому пользователь может почувствовать, откуда исходит вибрация, если он установлен на 2 минуты на тикере обратного отсчета... помогите!

1 ответ

Решение

Поскольку я не вижу остальной части вашего кода, я собираюсь принять несколько вещей.

Успение № 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 имеет значение false, он фактически не будет вибрировать.

Если это не то, что вы пытаетесь исправить, обновите ваш вопрос, добавив больше кода и описание вашего точного варианта использования. Надеюсь, поможет!

Другие вопросы по тегам