-2

我有这个代码,用于我正在开发的 android 应用程序:

package com.exercise.AndroidInternetTxt;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class AndroidInternetTxt extends Activity {

    TextView textMsg, textPrompt, textSite;
    final String textSource = "http://www.xxx/s.php";


    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        textPrompt = (TextView)findViewById(R.id.textprompt);
        textMsg = (TextView)findViewById(R.id.textmsg);
        textSite = (TextView)findViewById(R.id.textsite);

        //textPrompt.setText("Asteapta...");


        URL textUrl;
        try {
            textUrl = new URL(textSource);
            BufferedReader bufferReader = new BufferedReader(new InputStreamReader(textUrl.openStream()));
            String StringBuffer;
            String stringText = "";
            while ((StringBuffer = bufferReader.readLine()) != null) {
                stringText += StringBuffer;
            }
            bufferReader.close();
            textMsg.setText(stringText);
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            textMsg.setText(e.toString());
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            textMsg.setText(e.toString());
        }


        //textPrompt.setText("Terminat!");

    }

}

它工作正常,它从 .php 文件输出文本。我希望它每 10 秒自动刷新一次,但我真的不知道该怎么做。你能帮我解决这个问题吗?谢谢!

4

2 回答 2

1

在这里之前应该已经回答了很多次。这就是我的做法。

TimerTask fileProcessTask = new TimerTask(){

        @Override
        public void run() {
            //put your code to process the url here  
            processFile();

        }

    };

        Timer tm = new Timer();
        tm.schedule(fileProcessTask, 10000L);

应该管用

于 2012-05-24T18:33:20.807 回答
1

计时器任务将不起作用,因为它将创建一个不同的线程并且只有原始线程可能会触及它的视图。

对于 android,首选的方法是使用处理程序。以太币

textMsg.post( new Runnable(){

     public void run(){
            doProcessing();
            testMesg.setText("bla");
            testMsg.postDelayed(this,(1000*10));
     }
};

或拥有 Handler 类的单独实例

Handler mHanlder = new Handler();
mHandler.post(runnable);
于 2012-05-24T20:02:46.473 回答