Android单例线程与服务器通信

时间:2015-03-11 21:18:58

标签: android android-asynctask singleton android-handler background-thread

这主要是一个设计决策问题 我有一个活动,一个广播接收器,和一个与我的服务器通信的类(称之为ServerAccess)。

ServerAccess自然需要在自己的线程中,因为它将处理一些网络任务。活动需要从ServerAccess的结果更新其UI(因此需要某种方式来访问UI线程)。广播接收器还发送需要向ServerAccess发送数据。

我的问题是,我应该将ServerAccess设为单线程吗?如果是这样,你如何在Android中实现这一目标?我将其设为单例的原因是,每次从服务器进行任何数据交换时,我都需要在开始交换数据之前从服务器查询一些基本用户信息。每次广播接收器接收广播时,或者每次打开活动时,我都不想查询这个基本用户信息。相反,我认为更好的想法是获取单例ServerAccess(如果已经创建并开始交换数据)。如果已经实例化ServerAccess,那么它已经从服务器获取了该基本用户信息。

现在,AsyncTask会成为推进这一目标的方法吗?或者在我的Application类like so中创建一个线程?或者单身服务会是一个更好的主意吗?

1 个答案:

答案 0 :(得分:1)

我认为你必须让它成为单身人士。要使单例类创建该类的静态对象,然后创建一个静态方法getInstance(),这里如果该类的对象为null,则创建类的实例,否则返回实例..

示例:

          public class ServerAccess{
               public static ServerAccess severAccess = null;
               public static ServerAccess getInstance(){
                   if(serverAccess != null)return serverAccess;
                    serverAccess = new ServerAccess();
                     return serverAccess;
               }
           }