当我调用retrofit get方法时,我得到了android.os.networkonMainThread,这些异常任何人都能帮上忙。这是get方法
@GET("/advice/{id}")
User GetUser(@Path("id") int userid);在我的班上
restAdapter = RestAdapterManager.getInstance();
getuser = restAdapter.create(GetUser.class);
User user= getuser .GetUser(30). 发布于 2014-09-25 20:49:37
正如文档中所述,如果你的方法有一个返回类型,它是同步完成的(即。在主线程上)。要异步运行请求,请使其返回void,并向您的方法添加retrofit.Callback类型的参数,如下所示:
void GetUser(@Path("id") int userid, retrofit.Callback<User> user);发布于 2014-09-25 20:50:39
该错误意味着您需要在后台线程中执行网络操作,为此,您可以使用AsyncTask
private class DownloadFilesTask extends AsyncTask<String, Void, User> {
@Override
protected Bitmap doInBackground(String... urls) {
restAdapter = RestAdapterManager.getInstance();
getuser = restAdapter.create(GetUser.class);
User user= getuser .GetUser(30).
return user;
}
@Override
protected void onPostExecute(User user) {
//DO your UI tasks here
}
}发布于 2014-09-25 20:50:30
因为您正在对mainUI线程执行网络操作。为了避免这种情况,您必须在AsyncTask或工作线程(后台)上执行网络操作。
public class MyTask extends AsyncTask<Void, Void, Void>{
@Override
protected Void doInBackground(Void... params) {
restAdapter = RestAdapterManager.getInstance();
getuser = restAdapter.create(GetUser.class);
User user= getuser .GetUser(30);
return null;
}
}在你的activity onCreate()中,调用AsyncTask as,
new MyTask().execute();https://stackoverflow.com/questions/26039010
复制相似问题