您好,我正在尝试从Android应用程序注册用户。 我安装了Xampp,我创建了我的数据库,我创建了一个php页面,将被调用以保存数据库中的数据。当我把url http://192.168.xx/ah_login_api/访问我的php文件.An异常类型:“android .os.NetworkOnMainThreadException“at $ android.StrictMode AndroidBlockGuardPolicy.onNetwork
我不明白问题出在哪里!
答案 0 :(得分:1)
您需要使用AsyncTask来执行所有网络操作。
您的网络操作可能会花费大量时间,如果在主UI线程上完成,UI将无法响应。如果您的用户界面长时间冻结,应用程序可能会被操作系统杀死。
因此,Android 4+强制要求使用后台线程来执行网络操作。
使用 doInBackground()
将代码放在 execute()
和所有AsyncTask中进行网络活动。
以下是您的AsyncTask的样子:
private class MyAsyncTask extends AsyncTask<String, Integer, Void> {
protected void doInBackground() {
sendEmail();
}
protected void onProgressUpdate() {
//called when the background task makes any progress
}
protected void onPreExecute() {
//called before doInBackground() is started
}
protected void onPostExecute() {
//called after doInBackground() has finished
}
}
您可以使用 new MyAsyncTask().execute("");
答案 1 :(得分:0)
你需要使用AsyncTask进行newtwork操作,因为在主线程上运行长操作会对你的ui造成滞后,甚至使它无响应。
虽然最好使用AsyncTask,但您也可以使用另一个线程
喜欢:
Thread xamp = new Thread(){
public void run(){
//Your network operation here
}
};
xamp.start();
参考:http://developer.android.com/reference/android/os/AsyncTask.html