我有这个代码,对于我正在处理的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秒自动清洗一次,但我真的不知道该怎么做。能帮我解决一下吗?谢谢!
答案 0 :(得分: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);
应该工作
答案 1 :(得分: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);