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

Android服务与异步通信

戚侯林
2023-03-14

我有一个问题,试图找出最好的方法来完成一个简单的应用程序遵循Android最佳实践。下面是场景:

1)我有一个活动,用户输入一些东西,然后发送到后台服务

我不确定处理这种“事件”的标准方法是什么。您是否必须使用广播监听器和订户或它太多为这个简单的目的?

共有1个答案

佴飞驰
2023-03-14

如果希望在服务和活动之间进行通信,可以在Asynctask.onProgressUpdate方法中(或者在Asynctask.onPostExecute(Result)方法中)广播来自服务的更新,并使用活动中的广播接收器侦听更新。

与其复制和粘贴大量代码,不如看看Vogella关于服务的教程,尤其是练习(7.练习:使用服务和服务通信),可以在这里找到

www.vogella.com/tutorials/androidservices/article.html#tutorial_intentservice

在本练习中,您将查找DownloadService.PublishResults(...)方法,该方法从服务向正在侦听更新的broadcastreceiver发送广播,并在MainActivity中使用broadcastreceiver处理来自服务的更新。

 类似资料:
  • 异步Tcp客户端 异步Http客户端 异步Redis客户端 异步Mysql客户端 异步Log日志 异步文件读写 异常Exception

  • 异步Log日志 use AsyncLog; yield AsyncLog::info('hello world'); yield AsyncLog::debug('test debug', ['foo' => 'bar']); yield AsyncLog::notice('hello world',[], 'group.com'); yield Async

  • 我理解同步服务器和异步服务器之间的区别,但是我想知道,如果有这两种情况,哪一种更适合异步服务器还是同步服务器? > 同步:写入调用将被阻塞,直到消息准备好从内部完成队列通过线路发送。异步:写入调用立即返回,我们需要等待完成队列。在同步服务器中,如果我们添加队列,该队列基本上为evry写入调用和其他线程填充,并将其耗尽并执行stream.write然后性能将相同? 同步:gRPC内部创建线程池,线程

  • 异常Exception 以传统的try,catch抓取异常 如果在业务层不catch,框架层会捕捉,并返回一个500的server error响应。 如果在开发环境会返回一个500的具体错误的trace响应。 try { throw new \Exception("Error Processing Request", 1); //yield throwExc

  • 异步文件读写 读文件 use AsyncFile; $content = (yield AsyncFile::read(__ROOT__."runtime/test.txt")); 写文件 $res = (yield AsyncFile::write(__ROOT__."runtime/test.txt", "hello wordls!")); $res = (yi

  • 异步Mysql客户端 AsyncMysql::query($sql, $usePool = true) 第二个参数设为false将不会使用连接池中的资源,默认都会从连接池中取,配置连接池数量 => config/database.php 具体使用 use AsyncMysql; //设置超时时间 AsyncMysql::setTimeout(2); $res = (