如何在android中每隔几秒刷新一次视图?

时间:2012-12-18 17:45:44

标签: android

在我的应用程序中,我正在后台服务中传输图片。对于每张图片,我在sqlite db中都有数据库条目。现在我想在主屏幕上添加一个信息区域,显示需要传输的图片数量。此区域应每10秒刷新一次,以便用户可以查看是否需要完成多少个作业。

android解决此类问题的最佳做法是什么?

由于

3 个答案:

答案 0 :(得分:1)

您可以尝试以10秒的延迟创建方法的“递归调用”

    Handler handler = new Handler();

    handler.postDelayed(new Runnable() {
    @Override
    public void run() {

    //do anything


    }
    }, 10000);

**或更好地使用以下方法

Timer t = new Timer();

void timerMethod()
{
t.schedule(new TimerTask() {
public void run() {


Log.d("timer", "timer ");
//do anything


}
}, 10000, 10000);

}

答案 1 :(得分:1)

不是每10秒手动更新一次,而是每次任务完成时更新它都会更好。只要UI线程上没有发生任务,两者就不会互相干扰。如果进度条逐渐填满(或者百分比数字逐渐上升,或者其他什么),而不是每10秒进行一次大规模更改,它也会让应用程序感觉更顺畅。

要从非UI线程更新UI,您需要使用Handler。有一个很好的例子,说明如何使用Handler在Android developer site上从服务与UI进行通信。

答案 2 :(得分:0)

使用AsyncTask。工作进入doInBackground(),在使用publishProgress()的任务期间更新用户界面,使用onPostExecute()更新任务结束时的用户界面。 AsyncTask的优势在于它可以为您处理Handler的创建和管理,并提供了构建代码的简洁位置。

请在此处查看我的评论,了解框架代码:preventing app from looking hung

另请阅读API:http://developer.android.com/reference/android/os/AsyncTask.html

有关AsyncTasks的教程:http://www.vogella.com/articles/AndroidPerformance/article.html#asynctask