我写了如下代码在Android中连接网络
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
InitTask task = new InitTask();
Toast.makeText(getApplicationContext(), task.doInBackground(), Toast.LENGTH_LONG).show();
}
private class InitTask extends AsyncTask<Void, Void, String>{
protected String doInBackground(Void... p){
// Do network thing...
return str;
}
}
}
我使用了 AsyncTask
但发生了 NetworkOnMainThreadException
。
在主 Activity 中不允许将 AsyncTask 作为内部类吗? (我在 http://developer.android.com/training/basics/network-ops/connecting.html 中举了一个例子)
有什么问题?
最佳答案
I used AsyncTask but NetworkOnMainThreadException occurs.
因为您正在通过创建 InitTask
类对象来调用 doInBackground
方法。
要在其他Thread中执行doInBackground
方法调用task.execute()
方法启动AsyncTask
并使用onPostExecute
当 doInBackground
方法执行完成时显示 Toast 消息的方法:
@Override
protected void onPostExecute(String result) {
Toast.makeText(getApplicationContext(),
"Task Completed!", Toast.LENGTH_LONG).show();
}
关于java - 如何使用 AsyncTask 在 Android 中连接到网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28092609/