我知道错误正在发生,因为我试图在主线程上进行网络调用,所以我需要使用处理程序或asynctask
然而,我似乎无法做到正确这是我试图开始工作的代码
try {
// Create a URL for the desired page
URL url = new URL("http://darkliteempire.gaming.multiplay.co.uk/testdownload.txt");
// Read all the text returned by the server
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String str;
while ((str = in.readLine()) != null) {
// str is one line of text; readLine() strips the newline character(s)
eventText.setText(str);
eventText.setText(in.readLine());
}
in.close();
} catch (MalformedURLException e) {
Toast.makeText(getBaseContext(), "MalformedURLException", Toast.LENGTH_LONG).show();
} catch (IOException e) {
Toast.makeText(getBaseContext(), "IOException", Toast.LENGTH_LONG).show();
}
我希望在点击此按钮时调用它
public void onClick(View v) {
if (v.getId() == R.id.update) {
}
}
是否有人能够向我展示我应该包装第一位以及如何从onClick中调用它
答案 0 :(得分:2)
像
这样的东西public class TalkToServer extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onProgressUpdate(String... values) {
super.onProgressUpdate(values);
}
@Override
protected String doInBackground(String... params) {
//do your work here
return something;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
// do something with data here-display it or send to mainactivity
}
在doInBackground()
中完成所有繁重工作,您可以在其他3种方法中更新UI。
Here 是AsyncTask的文档
答案 1 :(得分:0)
在onClick方法中创建并实例化AsyncTask。在doOnBackground方法中调用url调用的调用(和等待),并使用onPostExecute中的响应执行任何操作(在主线程中再次发生)。