当前位置: 首页 > 知识库问答 >
问题:

Android从MainActivity中的服务获取数据

东郭自强
2023-03-14

您是否知道是否有任何方法可以从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的数据。班

注意:我不想使用LoaderManager,我使用服务来执行不会影响UI的后台任务。

共有3个答案

盛骏祥
2023-03-14

如果您想与您的服务通信,您必须使用绑定服务并在您的活动中绑定到它。然后为您的活动和服务创建处理程序。使用这些处理程序,您可以在下载完成后通知您的活动。如果您设法解决了问题或需要进一步的说明,请告诉我。

谢承颜
2023-03-14

您应该使用异步任务,而不是使用服务在后台运行东西

您可以执行以下操作:

new AsyncTask<Void,Void,Void>(){

doInBackground(){

//DO STUFF

}

onPostExecute(){
//Do What You want with the results
}
}

}
史鸿运
2023-03-14

要与您的服务通信,您可以使用绑定服务:

请检查这个:https://developer.android.com/guide/components/bound-services.html

或者您可以将您的数据发送到:广播接收器、数据库、共享偏好。这取决于您的需求。

 类似资料:
  • 问题内容: 我有一个应用程序,我想在其中从php Web服务器获取json数据到android mobile。我所拥有的是一个URL,点击该URL将为我提供json数据,例如 。但我想在我的android手机中检索此json格式,并从json格式获取经度和纬度值。 我们如何在android mobile上获得它呢? 提前致谢.. 问题答案: 首先做URL连接 JSON字串 在下面,我正在获取国家/

  • 问题内容: 我试图使用Angular从远程WS以Json格式获取数据,但遇到了一些麻烦。数据正确地来自Web服务,但是我不能在控制器内部使用它。这是为什么?角度代码: HTML: 问题答案: 您应该将$ http.get放入控制器中。 而且,Web服务返回的对象不是数组。因此,您的ng-repeat应该是这样的: 这是一个工作示例:

  • 问题内容: 我是Angular的新手(也是Java语言)。我已经编写了一个Angular服务,该服务返回一个用户数组。从HTTP调用检索数据,该HTTP调用以JSON格式返回数据。记录从HTTP调用返回的JSON数据时,可以看到此调用成功,并且返回了正确的数据。我有一个调用服务以获取用户的组件和一个显示用户的HTML页面。我无法从服务到组件获取数据。我怀疑我使用的Observable错误。也许我也

  • 我有一个包含会员信息的服务。这里的一个变量是团队字符串。 在我的组件中,我调用服务方法将信息放在变量中,然后在组件中显示它。 我想用服务中团队的唯一列表填充组件中的变量“teams”。这应该考虑到编写(因此我将使用toUpperCase()。 我的服务: 我的组成部分:

  • 我想创建一个应用程序,它始终在后台运行,并在每15分钟从服务器获取数据。如何在我的APP中实现这个后台服务?

  • 问题内容: 我了解可以用来在执行数据库操作时在Firestore服务器中生成时间戳记。我想了解如何从Firestore数据库中的特定设备中以没有任何数据库相关操作的格式获取时间戳。 问题答案: 因此,假设您拥有一个如下所示的数据库架构: 要获取属性值作为对象,请使用以下代码行: 请记住,为了获得该对象,应该按照以下帖子中我的回答中的说明设置日期: 在Firebase Firestore上Serve