Android异步,处理程序还是计时器?

Rap*_*rex 8 android timer handler android-asynctask

每隔5秒,我想调用我的web服务并获取文本(而不是图像),然后在我的ImageAdapter中显示它.实现这一目标的最佳方法是什么?

小智 8

final Handler handler = new Handler(); 
    final Runnable r = new Runnable()
    {
        public void run() 
        {
            callWebservice();
        }
    };

    handler.postDelayed(r, 5000);
Run Code Online (Sandbox Code Playgroud)


cit*_*onn 7

这取决于您是否要使用其他线程.您是否希望用户能够在下载图像时与UI线程上的应用程序进行交互?如果是这样,那么我肯定会使用带有一个小ProgressBar()的AsyncTaskstyle="@android:style/Widget.ProgressBar.Small"

如果你不关心穿线那么@inazaruk说.

编辑:事实是,从Web服务检索数据的大多数现代应用程序将使用AsyncTask与角落中的谨慎小装载器,只是为了让用户知道它正在更新.

编辑2:这是一个使用TimerTask每5秒运行一次的例子.关键是runOnUiThread().可能有更好的方法将所有元素绑定在一起,但这准确地描绘了所有元素.

myTimer = new Timer();
    myTimer.schedule(new TimerTask() {
        @Override
        public void run() {
            CallWebService();
        }

    }, 0, 1000);
}

private void CallWebService()
{
    this.runOnUiThread(fetchData);
}

private Runnable fetchData = new Runnable() {
    public void run() {
      asyncTask.execute();
    }
};
Run Code Online (Sandbox Code Playgroud)