在我的应用程序中,我有一个线程每隔 60 秒检查一次来自 Web 服务的数据(在 onCreate() 中定义):
new Thread(new Runnable() {
@Override
public void run() {
while (true) {
try {
Thread.sleep(PERIOD);
if(condition) do_something();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}).start();
另外,我有一个处理程序在用户不活动一段时间后执行一个方法:
private Handler disconnectHandler = new Handler();
private Runnable disconnectCallback = new Runnable() {
@Override
public void run() {
do_something_else();
}
};
public void resetDisconnectTimer(){
disconnectHandler.removeCallbacks(disconnectCallback);
disconnectHandler.postDelayed(disconnectCallback, TIMEOUT);
}
@Override
public void onUserInteraction() {
super.onUserInteraction();
resetDisconnectTimer();
}
现在我遇到的问题是 onUserInteraction() 也在 PERIOD 之后调用,而不仅仅是在 TIMEOUT 之后调用。
有什么想法可以让两者都工作吗?
提前致谢。
可能您想阅读以下来源:
仪器.java
public void callActivityOnUserLeaving(Activity activity) {
activity.performUserLeaving();}
活动.java
final void performUserLeaving() {
onUserInteraction();
onUserLeaveHint();}
public boolean dispatchKeyEvent(KeyEvent event) {
onUserInteraction();
...
}
public boolean dispatchKeyShortcutEvent(KeyEvent event) {
onUserInteraction();
.....
}
public boolean dispatchTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
onUserInteraction();
}
....
}
public boolean dispatchTrackballEvent(MotionEvent ev) {
onUserInteraction();
....
}
public boolean dispatchGenericMotionEvent(MotionEvent ev) {
onUserInteraction();
....
}
onUserInteraction() 调用如下:
- 如文档所示,onUserInteraction 每当将按键、触摸或轨迹球事件分派到活动时调用。
“互动”意义重大。所以所有的“XXEvent”都会调用这个方法。
- doc :“对 Activity 的 onUserLeaveHint() 回调的所有调用都将伴随对 onUserInteraction() 的调用。” onUserLeaveHint() :当活动即将结束时,作为活动生命周期的一部分调用
作为用户选择的结果进入后台。也就是说,当您要离开活动时,它会被调用。例如,在您的行为中开始另一项活动。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)