我有一个AsyncTask,在后台我想启动服务,spoused从url获取文本。
我需要从服务中知道它何时完成工作并从中获取一些文本并继续使用AsyncTask。 但我不知道如何从Service获取参数到AsyncTask并知道它是否已完成。
我在AsyncTask上的代码是:
protected String doInBackground(String... params) {
//starts service number activite
Intent serviceIntent = new Intent();
serviceIntent.setAction("services.conServise");
context.startService(serviceIntent);
return null;
}
服务代码:
public void onStart(Intent intent, int startId) {
// Create some random data
try{
URL url = new URL("http://hostname:80/index.html");
// Read all the text returned by the server
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String str;
while ((str = in.readLine()) != null) {
str is one line of text; readLine() strips the newline character(s)
}
activitNum = Integer.parseInt(str);
in.close();
} catch (MalformedURLException e) {
} catch (IOException e) {
statusCon=-1;
}finally{stopSelf();}
super.onStart(intent, startId);
}
感谢您的帮助!
答案 0 :(得分:1)
当Service
中的代码可以轻松地用Service
方法编写时,为什么要启动doInBackground()
。 doInBackground()
在非UI线程上运行,旨在执行此类网络活动。因此,我建议您在doInBackground()
本身执行所有从网络中获取数据的活动,而不是启动Service
。