我写下面的代码以连接到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
发生了。
不允许在主活动中将AsyncTask设置为内部类吗?(我在http://developer.android.com/training/basics/network-ops/connecting.html中举了一个例子)
有什么问题?
我使用了AsyncTask,但发生了NetworkOnMainThreadException。
因为您doInBackground
通过创建InitTask
类对象来调用方法。
要doInBackground
在其他线程调用task.execute()
方法中执行方法以启动方法,AsyncTask
并onPostExecute
在doInBackground
方法执行完成时使用方法显示Toast消息:
@Override
protected void onPostExecute(String result) {
Toast.makeText(getApplicationContext(),
"Task Completed!", Toast.LENGTH_LONG).show();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句