为了账号安全,请及时绑定邮箱和手机立即绑定

JAVA执行完异步回调的问题

JAVA执行完异步回调的问题

繁花如伊 2019-03-29 18:15:26
先放个图:没有JAVA基础,初学android开发,想法是这个样子的:有很多模块需要重复用到获取HTTP的数据,所以就做成了一个函数在需要的时候调用,但由于HTTP是异步的不能立刻获取到数据并执行A端代码,请教如何解决?A是一段执行函数代码findViewById(R.id.button1).setOnClickListener(new OnClickListener() {    public void onClick(View view) {       http_post("网址");       //如何获取到异步的数据并进行下一步的数据处理操作?       }});B代码是一个函数//通过HTTP(AsyncHttpClient)获取服务端的的数据(B代码有删节)public static void http_post(String URL) {    client.post(url, params, new AsyncHttpResponseHandler() {        public void onSuccess(int statusCode,String response) {            if (statusCode == 200) {                //在这里如何将数据返回到A的代码?            }        }        public void onFailure(Throwable e) {                   }    });冒昧邀请了几位大大,劳烦百忙之余给小弟解答一下。。。谢谢。
查看完整描述

9 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

很不明白你要即时得到数据的场景为什么一定要用异步?改成同步吧!

首先申明不会android开发,那么只能给思路了

  1. 异步请求成功以后不执行后续任何操作,另外开一个请求定时轮询检测请求结果的接口

  2. 异步请求成功以后不执行后续任何操作,开一个异步通知接口等待接口方来通知你结果

结合你的业务场景和开发方式来选择好了


查看完整回答
反对 回复 2019-04-22
?
RISEBY

TA贡献1856条经验 获得超5个赞

用看这个情景用handler就可以了。这应该只是一个java库,只是处理网络的异步请求直接。这个时候你用handler直接更新ui就可以了,更新ui必须在主线程中。


查看完整回答
反对 回复 2019-04-22
?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

如果需要用数据更新 ui,那么就使用 handler 回传数据到主线程处理。
在 activity 内声明一个 handler 对象,用这个对象来回传数据和操作 ui。

可以 Google 一下 handler 的用法


查看完整回答
反对 回复 2019-04-22
?
动漫人物

TA贡献1815条经验 获得超10个赞

1、主线程内是禁止网络请求的,所以只能在异步线程中使用,回调就是用来处理异步的请求回来了,主线程的UI控件刷新
2、多个模块要用这个数据,那么可以3中解决方案:A、存放在内存;B、存sharedpreference内;C、存数据库

查看完整回答
反对 回复 2019-04-22
?
湖上湖

TA贡献2003条经验 获得超2个赞

可以考虑在异步回调中(就是那个onsuccess)发出一个broadcast,然后在自己的页面上监听那个broadcast,一旦发现,则认为服务器有应答

查看完整回答
反对 回复 2019-04-22
  • 9 回答
  • 0 关注
  • 1284 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信