android - 当前线程没有调用 Looper.prepare()。强制同步模式

标签 android multithreading

我收到 当前线程尚未调用 Looper.prepare()。在 logcat 中强制同步模式 警告。这样我就无法进入 onsuccess 响应处理程序。

我提到了这个post .但它对我不起作用。

堆栈跟踪:

01-19 22:52:30.683: W/AsyncHttpRH(23815): Current thread has not called Looper.prepare(). Forcing synchronous mode.

01-19 22:52:30.685: W/System.err(23815): java.lang.IllegalArgumentException: Synchronous ResponseHandler used in AsyncHttpClient. You should create your response handler in a looper thread or use SyncHttpClient instead.
01-19 22:52:30.686: W/System.err(23815):    at com.loopj.android.http.AsyncHttpClient.sendRequest(AsyncHttpClient.java:1493)
01-19 22:52:30.686: W/System.err(23815):    at com.loopj.android.http.AsyncHttpClient.get(AsyncHttpClient.java:1078)
01-19 22:52:30.686: W/System.err(23815):    at com.loopj.android.http.AsyncHttpClient.get(AsyncHttpClient.java:1052)
01-19 22:52:30.686: W/System.err(23815):    at agriya.talkr.localdb.RestClient.get(RestClient.java:29)
01-19 22:52:30.686: W/System.err(23815):    at agriya.talkr.localdb.ServerCallee.execute(ServerCallee.java:77)
01-19 22:52:30.686: W/System.err(23815):    at agriya.talkr.CreateGroup$synchronizeInBg.doInBackground(CreateGroup.java:213)
01-19 22:52:30.686: W/System.err(23815):    at agriya.talkr.CreateGroup$synchronizeInBg.doInBackground(CreateGroup.java:1)
01-19 22:52:30.686: W/System.err(23815):    at android.os.AsyncTask$2.call(AsyncTask.java:292)
01-19 22:52:30.686: W/System.err(23815):    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
01-19 22:52:30.686: W/System.err(23815):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
01-19 22:52:30.686: W/System.err(23815):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
01-19 22:52:30.686: W/System.err(23815):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
01-19 22:52:30.686: W/System.err(23815):    at java.lang.Thread.run(Thread.java:818)

下面贴出代码并指出错误行:

CreatGroup.java:

public class CreateGroup extends AppCompatActivity {

........
........

    @Override
        protected String doInBackground(String... params) {
          try {

       .......
      ServerCallee.execute(Constants.SERVER_CALL_newGroup, map); --->213th line
    } catch (JSONException e) {

        e.printStackTrace();
        return "1";

        }

ServerCallee.java:

public static void execute(final Constants _service, HashMap<String, String> params){

  ........
  ........


 RestClient.get(null, rqm, new JsonHttpResponseHandler(){  --->77th line

 ........
    @Override
    public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
        System.out.println("onFailure - String: " + _service.toString());

        Log.e("fail 1", "Test");


     }
      .......(On Success response handler)

RestClient.java:

 public class RestClient {

          private static AsyncHttpClient client = new AsyncHttpClient();

      public static void get( String url,  RequestParams params, final JsonHttpResponseHandler responseHandler) {

              client.get(getAbsoluteUrl(url), params, responseHandler); -->29th line

          }

          public static void post(final String url, final RequestParams params, final JsonHttpResponseHandler responseHandler) {

             client.get(getAbsoluteUrl(url), params, responseHandler);

          }
    }

最佳答案

虽然您没有显示它,但您似乎是从 AsyncTask 中调用它的。在这种情况下,您可以按照错误消息的建议使用 SyncHttpClient

关于android - 当前线程没有调用 Looper.prepare()。强制同步模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34877706/

相关文章:

java - 在 ListView 中编辑文本?

android - RuntimeException : java. lang.IllegalArgumentException 与 MainActivity.onStart

python - 使用 python 和依赖项进行多处理

Objective-C:阻塞线程直到 NSTimer 完成(iOS)

C# Lock 语法 - 2 个问题

java - Couchbase Java getAndLock 混淆

java - 为 Android SQLite 动态生成创建表查询

java - Android openGL渲染器返回空指针异常

android - 我们如何在 android 中为整体布局制作文本样式?

java - Java中Runnable和Callable接口(interface)的区别