android app开发的时候,都有很多个activity,基本每个activity都需要请求服务器,获取想要得到的数据。而请求网络的耗时都很大,所以不可以在主线程中做这些操作,需要另开启线程,和Handler配合使用。
我的步骤是:
1.开启线程  
2.请求某路径获得json返回值  
3.解析json并获得返回对象  
4.通知handler操作完成,让handler做下一步处理
但是现在有一个问题,每个activity里,每次请求网络都需要做这相同的步骤,不同的只有请求网络的路径,调用不同的方法解析json,和返回不同的Entity。我想有没有什么样的方法,可以把这个线程抽取出来,让所有activity共用,我们只需要传入相应的路径和想要获得的Entity或者什么样的值,就能得到我们想要的东西。哪位大神有办法,帮我解释一下,谢谢线程android

解决方案 »

  1.   

    写个父类,每个activity继承他,或者可以弄个公共类
      

  2.   

    恩,我就是这个想法,我的activity有一个公共的父类,也都需要继承他,这样更便于管理。
    我需要知道的,就是该如何抽取这样的公共类。因为传入一个路径参数我可以做到,但是返回的实体,我该怎么去写?因为我需要在线程里面解析json,比如我这次请求需要得到A实体类,另一个请求就需要返回B实体类,该怎么做?
      

  3.   

    没有关联
    举个例子:我可能登录的时候,需要请求网络,返回给我一个用户信息的实体。
    比如我获取新闻列表的时候,需要得到另一个实体,或List等等
      

  4.   

    没有关联
    举个例子:我可能登录的时候,需要请求网络,返回给我一个用户信息的实体。
    比如我获取新闻列表的时候,需要得到另一个实体,或List等等
    那人就封装网络请块这块的功能代码,返回的结果由各个子activity去解析..
      

  5.   

    没有关联
    举个例子:我可能登录的时候,需要请求网络,返回给我一个用户信息的实体。
    比如我获取新闻列表的时候,需要得到另一个实体,或List等等
    那人就封装网络请块这块的功能代码,返回的结果由各个子activity去解析..
    恩是,我现在只能封装请求网络这块,可以得到一个返回的json,但是有的json会很复杂,或数据量较大,解析会很耗时,所以我才想把解析这一块,也封装进去
      

  6.   

    没有关联
    举个例子:我可能登录的时候,需要请求网络,返回给我一个用户信息的实体。
    比如我获取新闻列表的时候,需要得到另一个实体,或List等等
    那人就封装网络请块这块的功能代码,返回的结果由各个子activity去解析..
    可是目前看来,我做不到
      

  7.   

    我觉得是这样:
    你在主线程中创建一个Handler对象,把你所谓的“线程类”抽出来做成一个MyThread,然后MyThread的构造函数,传入(“相应的路径”,"想要获得的Entity",“刚创建的Hanlder对象”),然后json回来之后,你接收到之后再通过Handler来处理UI线程~
      

  8.   

    我的想法是  网络请求放在一个类里  里面开启线程获取资源  至于初始化  各种参数等在构造函数里处理
    解析放在另一个类里  
    把你的各种返回定义一个基类 比如Result神马的  
    然后不同的返回结果各种继承   AResult  BResult...
    然后定义协议  返回体  加上返回类型的关键字  比如  resul-type=A
    这样你解析得到A  就按AResult这个类的定义去解析(不同的结果调用不同的方法解析)  并用解析到的值实例化一个AResult 返回给请求的activity
      

  9.   

    我的想法之所以要把json的解析放在纯种里做,是因为有的时候我们需要解析的数据量比较大,或者复杂度比较高,这样如果放在UI线程里做,可能因为耗时严重而出现问题,所以我想把解析方法放到线程里去做。
      

  10.   

    我的想法之所以要把json的解析放在纯种里做,是因为有的时候我们需要解析的数据量比较大,或者复杂度比较高,这样如果放在UI线程里做,可能因为耗时严重而出现问题,所以我想把解析方法放到线程里去做。
    不影响啊  你解析单独开线程解析  不要和下载一起   也是可以的 
      

  11.   

    我自己解决了,自己写的回调函数,谢谢各位帮忙了。!!!
    LZ V5
      

  12.   

    写个公共类专门处理网络链接获取数据,然后返回结果在不同的Activity里面解析就可以吧。
      

  13.   

    写一个解析数据的接口,每个实体类需要解析自己的数据要实现这个接口,由于有不同的Entity,可以考虑用泛型。主线程不适宜处理大数据,要另起子线程,但请求的结果必须要回调函数处理,不然会造成这个App挂死无响应的现象。
      

  14.   

    恩,我就是这么做的,但不需要使用泛型,因为子线程里存在Entity也是没有实际用处的。谢谢你了