【发布时间】:2017-03-01 20:45:05
【问题描述】:
你知道是否有任何方法可以从 MainActivity 启动一个服务,发送一些数据,当服务完成后,从服务中获取数据。例如:
//MainActivity.class
private ArrayList myList = new ArrayList();
public void fetchDataFromInternet()
{
Intent intent = new Intent(this, DataFromInternetService.class);
intent.putArrayListExtra("MYLIST", myList);
startService(intent);
//In DataFromInternetService the app fetches data from the internet and puts them in the myList.
/*
TODO:
1. Get the data from the service after the it has finished.
*/
}
//Note: The service runs only 1 time.
另外,如果这不可能,你建议什么替代方案,MainActivity 可以访问 DataFromInternetService.class 中的数据。
注意:我不想使用 LoaderManager,我使用服务来执行不影响 UI 的后台任务。
【问题讨论】:
-
你可以使用本地广播接收器。
-
是的,但是服务完成后我将如何获得新的“myList”?
-
完成服务是什么意思?好吧,您可以通过广播接收器的意图发送列表。
-
服务在后台运行,直到完成所有数据的获取...我可以使用广播接收器...但是我想在 MainActivity 中返回“myList”,特别是在 fetchDataFromInternet()方法,以便我以后可以将其分配给 myList
标签: android android-intent android-service