Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用2个嵌套异步线程-Android Java AutoCompleteTextView_Java_Android_Asynchronous_Nested - Fatal编程技术网

使用2个嵌套异步线程-Android Java AutoCompleteTextView

使用2个嵌套异步线程-Android Java AutoCompleteTextView,java,android,asynchronous,nested,Java,Android,Asynchronous,Nested,我一直在创建一个动态的AutoCompleteTextView,在使用两个嵌套的异步线程时遇到了一个问题 第一个异步线程是一个过滤器,在这个线程中,我异步地进行HTTP调用。这会导致筛选器返回空的FilterResults,因为筛选器不等待异步HTtP调用 为了克服这种情况,我使用了一个标志,并在return行等待异步HTTP调用完成并设置标志之前,在过滤器内部使用了一个while循环 这很好,但有更好的解决方案吗 这种方法会导致另一个我看不到的问题吗 我在异步使用JSON请求,所以我通过使用

我一直在创建一个动态的
AutoCompleteTextView
,在使用两个嵌套的异步线程时遇到了一个问题

第一个异步线程是一个
过滤器
,在这个线程中,我异步地进行HTTP调用。这会导致筛选器返回空的
FilterResults
,因为筛选器不等待异步HTtP调用

为了克服这种情况,我使用了一个标志,并在
return
行等待异步HTTP调用完成并设置标志之前,在过滤器内部使用了一个while循环

  • 这很好,但有更好的解决方案吗

  • 这种方法会导致另一个我看不到的问题吗


我在异步使用JSON请求,所以我通过使用如下同步JSON请求来克服这种情况:

RequestFuture<JSONObject> future = RequestFuture.newFuture();
itemReq = new JsonObjectRequest(url + city, new JSONObject(), future, future);
AppController.getInstance().addToRequestQueue(itemReq);
RequestFuture=RequestFuture.newFuture();
itemReq=新JSONObject请求(url+城市,新JSONObject(),未来,未来);
AppController.getInstance().addToRequestQueue(itemReq);

如果筛选器在主线程上工作,则让它等待后台线程完成是一个糟糕的想法、糟糕的做法等,最终可能会导致错误。PerformFilter在后台线程中调用,因此您可以调用sync http请求,