我想建立一些条件来在 X 时间后将用户踢出活动。
我明白了一般的想法:
- 以毫秒为单位存储当前时间,以毫秒为单位从日历对象存储
- 确定我希望用户在活动中停留多长时间
- 添加多长时间 + 存储当前时间以确定启动关闭该活动的日历时间(以毫秒为单位)
- 将踢出时间与当前时间进行比较(以毫秒为单位)
对于最后一步,我发现我能找到的最好的“时间监听器”是 TimerTask,实现如下:
protected void onPostExecute(Boolean success){
kickout.schedule(new KickoutTask(), 5000);
}
class KickoutTask extends TimerTask {
public void run() {
Looper.prepare();
replaceRootView(getLocalActivityManager().startActivity("myPreviousActivity", new
Intent(this, myPreviousActivity.class)
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))
.getDecorView());
Looper.loop();
}
}
这是 AsyncTask 的最后一部分,计数和“时间监听”实际上是有效的,但是当涉及到替换run()
方法中的视图时,应用程序崩溃了
"Only the original thread that created a view hierarchy can touch its views."
我理解这个概念,但我不明白在解决函数中的计数后如何摆脱这个活动schedule
。此外,由于需要进行一些刷新,因此我需要“替换”视图而不是仅对此活动使用“finish()”。
我想使用另一个简单的 AsyncTask,但该schedule
函数需要 TimerTask
洞察力赞赏