0

この関数は、アクティビティによって呼び出されたときにサービスに常駐し、乱数を生成してArrayListに追加する必要があります。新しいアイテムが追加されるたびに、runOnUiThreadを呼び出してこれらの数値を使用して線グラフをプロットし、1秒待機するupdateを介してUIを更新しようとします。毎秒更新を行いたい。アクティビティにメッセージキューのクリア実行を強制する方法はありますか?現在のところ、このスレッドの実行が終了するまで待機してから更新されます。代わりにこれを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.run()の代わりにThread.start()を使用してみてください。run()を使用する場合、Runnableは新しいスレッドで起動されません。これで問題が解決しない場合は、update()メソッドのコードを投稿してください。UIスレッドからpollDPを呼び出していると推測して正しいですか?–マルツェ

于 2012-06-29T10:17:37.403 に答える
0

MessageHandlerを使用して要件を満たしてみてください。詳細については、このリンクにアクセスし、必要に応じて必要な変更を行ってください:)

于 2012-06-29T08:36:29.667 に答える