好的,所以我正在尝试创建一个能够从Web服务器检索数据的应用程序,然后在textView上显示它,并在数据从Web服务器更改时不断更新它。而经过多轮尝试后我到目前为止所得到的是如图所示
public class HttpTest extends AppCompatActivity {
TextView text = (TextView) this.findViewById(R.id.textView3);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_http_test);
HttpURLConnection urlConnection = null;
try {
URL url = new URL("http://IPGOESHERE/");
HttpURLConnection urLConnection = (HttpURLConnection) url.openConnection();
InputStream in = urLConnection.getInputStream();
BufferedReader data = new BufferedReader(new InputStreamReader(in));
StringBuilder total = new StringBuilder();
String line;
while ((line = data.readLine()) != null) {
total.append(line).append('\n');
}
String result = total.toString();
text.setText(result);
}
catch (Exception e) {
e.printStackTrace();
}
finally {
if (urlConnection != null) {
urlConnection.disconnect();
}
}
}
我不认为我写的内容允许不断更新,但我至少希望能够在textView上显示某种数据,并确保它不会先崩溃。所以,如果有人能够指出我做错了什么,那将非常感激。
答案 0 :(得分:2)
应用程序崩溃,因为您在主线程上发出HTTP请求。请改用AsyncTask
答案 1 :(得分:1)
你需要在不同的线程上进行这种工作。尝试使用AsyncTask。 你创建一个扩展AsyncTask的类,而不是在doInBackground方法中创建url连接(在工作线程上调用的方法)。然后,您可以在ui线程上调用的onPostExecute方法中更新textview。祝你好运:)