Мне нужно показать экран Pincode, когда пользователь неактивен более 1 минуты.
Я нашел этот ответ , который дал мне хорошее решение для моих нужд, и я реализовал егона моем BaseActivity .
Но теперь у меня проблема с методом onUserInteraction () , который вызывается дважды (и дважды запускает мой Runnable) каждый раз, когда янажмите кнопку и начните новое действие, потому что, когда я возвращаюсь через 1 минуту к предыдущему экрану, отображается экран пин-кода.
Я изменил свой Runnable на статический, но я теряю контекст, чтобы запустить операцию пин-кода.
Что можно сделать, чтобы запустить действие из Runnable или убедиться, что onUserInteraction () срабатывает только тогда, когда что-то нажимается на экране?
Мой текущий код:
public class BaseActivity {
private static final String TAG = BaseActivity.class.getSimpleName();
static private Handler disconnectHandler = new Handler() {
public void handleMessage(Message msg) {
}
};
private Runnable disconnectCallback = new Runnable() {
@Override
public void run() {
Intent intent = new Intent(BaseActivity.this, CustomPinActivity.class);
startActivity(intent);
}
};
public void resetDisconnectTimer() {
disconnectHandler.removeCallbacks(disconnectCallback);
disconnectHandler.postDelayed(disconnectCallback, getResources().getInteger(R.integer.disconnect_timeout));
}
public void stopDisconnectTimer() {
disconnectHandler.removeCallbacks(disconnectCallback);
}
@Override
public void onUserInteraction() {
resetDisconnectTimer();
}
@Override
protected void onResume() {
super.onResume();
resetDisconnectTimer();
}
@Override
public void onStop() {
super.onStop();
stopDisconnectTimer();
}
}
Манифест:
<activity
android:name=".CustomPinActivity"
android:launchMode="singleTop"
android:label="@string/title_activity_pincode" />
<activity android:name=".base.BaseActivity"
android:launchMode="singleTop" />