我试图在我的应用中实施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?
}
}
});
}
但如果发生连接错误,我怎么能告诉客户端(调用此服务的活动)?
答案 0 :(得分:1)
您应该考虑使用IntentService而不是Service。
您可以覆盖onHandleIntent(Intent)并在那里执行您的网络工作,因为它不会在主线程上运行。
Android开发者文档
所有请求都在一个工作线程上处理 - 它们可能需要多长时间(并且不会阻止应用程序的主循环),但一次只能处理一个请求。
要通知活动有关服务回复的信息,您可以看到great example here
如果您打算在多个活动中使用它并且您期望得到回复,我也会考虑using an AsyncTaskLoader。