在服务中初始化网络连接

时间:2016-10-28 16:26:38

标签: java android

我试图在我的应用中实施Service来管理网络。此服务将用于与多个活动的外部服务器通信。

我应该如何以及何时初始化与服务器的连接?我想在服务的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?
            }
        }
    });
} 

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

1 个答案:

答案 0 :(得分:1)

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

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

Android开发者文档

  

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

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

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