0

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

android中解决此类问题的最佳实践是什么?

谢谢

4

3 回答 3

2

您可以尝试以 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);

}
于 2012-12-18T17:50:25.930 回答
1

与其每 10 秒手动更新一次,不如在每次任务完成时更新它。只要任务不在 UI 线程上发生,两者就不会相互干扰。如果进度条逐渐填满(或百分比数字逐渐上升,或其他),而不是每 10 秒发生一次巨大变化,它也会使应用程序感觉更流畅。

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

于 2012-12-18T17:54:59.303 回答
0

使用AsyncTask. 工作开始doInBackground(),在任务期间更新 UI,在任务publishProgress()结束时更新 UI onPostExecute()。to 的优点AsyncTask是它Handler为您处理创建和管理 s 并提供一个简洁的位置来构建您的代码。

在此处查看我对骨架代码的评论:防止应用程序看起来挂起

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

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

于 2012-12-18T20:14:36.353 回答