8

プログラムの「自動更新」または実行可能なメソッドを実行する方法を検索しました。ハンドラーとスレッドに関する投稿を見ました...検索元はスレッドだと思いますが、プログラムを動作させることができません。 ..いくつかのコードをお見せしましょう:

refresh.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            getUrlText();
            if (time.getText().toString().equals("")
                    || time.getText().toString().equals("0")) {
                mins = 0;
            } else {

                mins = Integer.parseInt(time.getText().toString());
                setTimer(mins);
                t.start();


            }

        }

        private void setTimer(int mins) {
            miliSecTime = mins * 60 * 1000;

        }
    });

    t= new Thread() {
        @Override
        public void run() {
            long start = System.currentTimeMillis();

            while (true) {
                long time = System.currentTimeMillis() - start;
                int seconds = (int) (time / 1000);
                if (seconds > miliSecTime) {
                    getUrlText();
                    start = System.currentTimeMillis();

                }
            }
        }
    };
}

したがって、コードのこの部分は、ユーザーから番号を取得してから getUrlText(); を実行する必要があります。x分ごと、ここでxはユーザーが入力した数値です...私の問題は実行中にあるはずですが、何が何であるかわかりません...助けてくれてありがとう:)

4

3 に答える 3

10

これを行う1つの方法を次に示します。

アクティビティでこれらを宣言します。

Handler handler = new Handler();
Runnable timedTask = new Runnable(){

    @Override
    public void run() {
        getUrlText();
        handler.postDelayed(timedTask, 1000);
    }};

次に、onClick を設定します。

button.setOnClickListener(new OnClickListener() {

    @Override
        public void onClick(View v) {
            getUrlText();
            handler.post(timedTask);
        }
    });

これはtimedTask1000 ミリ秒ごとに実行されます。必要に応じてこの数を増やしてください。

あなたが何をしているのかなどはわかりませんがmins、定期的に実行する必要があるすべてのロジックをtimedTask Runnable. それが理にかなっていることを願っています。

于 2013-06-14T17:08:20.323 に答える