我想建立一些条件,在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
洞察力赞赏
答案 0 :(得分:1)
首先,您应该在CountDownTimer
中执行此任务其次,您需要使用Handler来更新其他线程的视图。
请参阅Handler
和AsyncTask
上的本教程:
http://www.vogella.de/articles/AndroidPerformance/article.html