0

此函数驻留在服务中,当被活动调用时,它应该生成一个随机数并将其添加到 ArrayList。每次添加新项目时,它都会尝试通过 update 更新 UI,该更新调用 runOnUiThread 以使用这些数字绘制折线图,​​然后等待 1 秒。我希望每秒更新一次。有没有办法强制活动清除执行其消息队列?截至目前,它会等到该线程完成执行后再更新。我应该在 AsyncTask 中实现它吗?

public void pollDP(int numPt){
    final Random gen = new Random();
    final int numPtF = numPt;
    serverLoadList = new ArrayList<Integer>();

        new Thread(new Runnable(){
            @Override
            public void run(){
                for(int i = 0; i < numPtF; i++){
                    serverLoadList.add(gen.nextInt());
                    update();
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
            }

        }).run();
    }
}
4

2 回答 2

0

解决方案在 Martze 对我的问题的评论中。我正在将此作为我的问题的解决方案。

尝试使用 Thread.start() 而不是 Thread.run()。如果使用 run(),则 Runnable 不会在新线程中启动。如果这没有帮助,请发布一些 update() 方法的代码。我猜你是从 UI-Thread 调用 pollDP 是对的吗?– 马尔策

于 2012-06-29T10:17:37.403 回答
0

尝试使用 MessageHandler 来满足您的要求,请访问此链接以获取更多详细信息,根据您的需要进行必要的更改:)

于 2012-06-29T08:36:29.667 回答