在后台线程内循环并不断更新 UI 时使用啥?

Posted

技术标签:

【中文标题】在后台线程内循环并不断更新 UI 时使用啥?【英文标题】:What to use when loop inside a background thread and keep updating UI?在后台线程内循环并不断更新 UI 时使用什么? 【发布时间】:2019-08-19 08:49:26 【问题描述】:

我正在设计一个应用程序,它会在 t 秒后继续向服务器发送 JSON 数据,并在收到来自该服务器的响应时更新 Web 视图(发送成功后)。我希望这个后台工作永远运行,直到我退出应用程序。我应该在异步任务中使用循环吗?

我在 android 主页中读到 Async Task 应该用作一次性作业。

【问题讨论】:

使用计时器? developer.android.com/reference/java/util/Timer 【参考方案1】:

使用 Runnable 和 Handler Class 来执行延迟后的函数

    Handler handler = new Handler();
    final int delay = 5000; //milliseconds

    Runnable r=new Runnable()
        public void run()
          //Execute your asynctask here 
        
    ;
    handler.postDelayed(r, delay);

并在 Asynctask 的 onPostExecute 中更新 UI

【讨论】:

以上是关于在后台线程内循环并不断更新 UI 时使用啥?的主要内容,如果未能解决你的问题,请参考以下文章

核心数据在后台线程上缓慢处理更新

请帮忙解释下Dispatcher.BeginInoke((Action)(()=>....;...;...;),null);啥意思?

如何在Android开发中用AsyncTask异步更新UI界面

Swift - 内部有后台线程的退出功能

后台工作人员仍然冻结 ui

Android 多线程 AsyncTask 完成后台任务并反馈给UI