您好,我正在尝试从 Android 应用程序注册用户。我安装了 Xampp,我创建了我的数据库,我创建了一个 php 页面,该页面将被调用以将数据保存在数据库中。当我将 url http://192.168.xx/ah_login_api/放入我的 php 文件时。异常类型:$ android.StrictMode AndroidBlockGuardPolicy.onNetwork 处的“android.os.NetworkOnMainThreadException”
我不明白问题出在哪里!
您好,我正在尝试从 Android 应用程序注册用户。我安装了 Xampp,我创建了我的数据库,我创建了一个 php 页面,该页面将被调用以将数据保存在数据库中。当我将 url http://192.168.xx/ah_login_api/放入我的 php 文件时。异常类型:$ android.StrictMode AndroidBlockGuardPolicy.onNetwork 处的“android.os.NetworkOnMainThreadException”
我不明白问题出在哪里!
您需要使用AsyncTask来执行所有网络操作。
您的网络操作可能需要很长时间,如果在主 UI 线程上完成,UI 会变得无响应。如果您的 UI 长时间冻结,该应用程序可能会被操作系统杀死。
因此,Android 4+ 强制使用后台线程来执行网络操作。
将代码放入内部进行网络活动doInBackground()
,所有 AsyncTask 使用execute()
.
这是您的 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("");
您需要将 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