android - 当我的服务运行 TimerTask 时,如何防止 UI 挂起?

标签 android service freeze timertask

我有一个包含 Timer 和 TimerTask 的服务,用于在一段时间内从 Webservice 接收数据。当我的 TimerTask 运行时,UI 会挂起,直到 Web 服务进程完成。如何将我的任务放在一个线程中以防止 UI 挂起?

我的代码:

Timer timerSyncFull = new Timer();

class taskSyncFull extends TimerTask {
        @Override
        public void run() {
            hSyncFull.sendEmptyMessage(0);
        }
    };



final Handler hSyncFull = new Handler(new Callback() {
        @Override
        public boolean handleMessage(Message msg) {
            procSyncFull();
            return false;
        }
    });

public void procSyncFull() {
        try {
            // My webservice process

        } catch (Exception e) {
        }
    }



@Override
    public void onStart(Intent intent, int startId) {

timerSyncFull = new Timer();

timerSyncFull.schedule(new taskSyncFull(), 5*60*1000,
                        5*60*1000);

}

最佳答案

使用 AsyncTasks 或将您的 Handler 附加到另一个 Looper 线程。

关于android - 当我的服务运行 TimerTask 时,如何防止 UI 挂起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8768612/

相关文章:

java - 除了 javax.sound.midi : Are there any? 之外,Java 中的一个简单的免费 MIDI 实现

Android 服务 getSharedPreferences 问题

c# - 如何使用 async/await 查找 'hangs' 的哪个方法?

android - 如何使用Intent在Kotlin中放置数据类列表

java - Android:在线程中使用未捕获的异常强制崩溃

gradle 和 manifest 上的 Android sdk 版本

outlook - 分析 Outlook HANG 转储(安装了 GoogleCalendarSync 插件)

java - 在android中的远程数据库中输入或更新后通知应用程序

javascript - 将类的静态方法转换为变量 typescript

freeze - 在停止之前暂停太多次,AVAudioRecorder会卡住