【问题标题】:Initializing network connection in Service在服务中初始化网络连接
【发布时间】:2016-10-29 00:41:41
【问题描述】:

我正在尝试实施服务来管理我的应用程序中的网络。该服务将用于从多个活动与外部服务器进行通信。

我应该如何以及何时初始化与服务器的连接?我想过在服务的 onCreate 方法中这样做:

@Override
public void onCreate() {
    new Thread(new Runnable() {
        @Override
        public void run() {
            try{
                socket = new Socket(HOST, PORT);

                ... 
            }
            catch(IOException e){
               // How to manage this exception?
            }
        }
    });
} 

但是如果发生连接错误,我怎么能告诉客户端(调用此服务的活动)?

【问题讨论】:

    标签: java android


    【解决方案1】:

    您应该考虑使用 IntentService 而不是 Service。

    您可以覆盖 onHandleIntent(Intent) 并在那里完成您的网络工作,因为它不在主线程上运行。

    Android 开发者文档

    所有请求都在单个工作线程上处理——它们可能需要尽可能长的时间(并且不会阻塞应用程序的主循环),但一次只会处理一个请求。

    要通知活动有关服务响应的信息,您可以看到 great example here

    如果您打算在多个活动中使用它并且您期望得到响应,我也会考虑using an AsyncTaskLoader

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-04
      • 1970-01-01
      • 1970-01-01
      • 2015-05-03
      相关资源
      最近更新 更多