草庐IT

android - 有关GcmTaskService的一些问题

coder 2023-06-07 原文

背景

我想使用Lollipop上提供的新JobScheduler API,但遗憾的是它没有Lollipop之前的官方端口。

但是,有GcmTaskService,它提供了非常相似的功能。

问题

这个API是相当新的,因此很少有地方可以查找有关如何使用它的信息(例如herehere)。

问题

我对此新API有一些疑问:

  • 似乎要求使用Google Play服务(here)(使用Android的Lollipop版本时,它将使用常规的JobScheduler除外)。如果无法使用Google Play服务,该怎么办?
  • 看来,即使我对重复的任务使用了“setPersisted(true)”,但是当我重新启动设备时,也不会再次调用该任务。怎么会?
    编辑:那是因为我错过了RECEIVE_BOOT_COMPLETED的许可。
  • 如果我不使用“setRequiredNetwork”,任务的默认行为是什么?是“NETWORK_STATE_ANY”吗?
  • 关于onRunTask返回的内容的docs,我可以返回任何值“RESULT_FAILURE”,“RESULT_RESCHEDULE”,“RESULT_SUCCESS”(信息here)。似乎FAILURE和SUCCESS选项将做同样的事情-从队列中删除任务。是真的吗如果是这样,它们之间到底有什么区别?它们的功能是否有所不同?
  • TaskParams”仅用于任务的标记吗?我可以使用API​​以某种方式将 bundle 包传递给任务吗?否则,我将需要设置一个数据库来存储应该传递给任务的内容,对吗?
  • 应用程序是否有可能获得任务队列?我知道可以使用adb,但是也可以使用API​​吗?
  • 他们说(here)每个任务都有长达3分钟的唤醒时间。如果任务需要的更多,该怎么办?它是否应该自己获得另一个唤醒锁? API是否会警告说唤醒锁已释放?这是文档所说的:

  • The scheduler will hold a PowerManager.WakeLock for your service, however after three minutes of execution if your task has not returned it will be considered to have timed out, and the wakelock will be released. Rescheduling your task at this point will have no effect. If you suspect your task will run longer than this you should start your own service explicitly or use some other mechanism; this API is intended for relatively quick network operations.


  • 他们说(here)每次升级/替换应用程序时,所有网络任务都将被删除,并且在发生这种情况时会调用“onInitializeTasks”,您可以重新安排它们的时间。如何重新安排任务?我想我什至都无法获得任务 list ...
  • 是否可以告诉任务在白天偏爱特定时间?例如,在14:00-15:00之间?
  • 我注意到,如果您安排任务,然后强行停止和/或清除应用程序的数据,该任务仍将运行。如何避免这种行为?
  • 最佳答案

    您可以在此处找到大多数问题的答案。

    https://github.com/jacktech24/gcmnetworkmanager-android-example/blob/master/README.md

    到那里没有答案的答案

    7:移除唤醒锁后,您不会收到通知,正如他们在文档中所说的那样,此API仅用于短期任务,如果您有更长的时间,请编写自己的实现

    9:不,您目前还不能,API不允许

    10:那是因为Google Play服务正在处理它,而且没有办法解决。您必须在服务中检测是否已安装该应用程序(我想这是您的问题),例如。创建配置等,并在其中一项被调用时最终取消所有任务。

    关于android - 有关GcmTaskService的一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31426052/

    有关android - 有关GcmTaskService的一些问题的更多相关文章

    1. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

      我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

    2. ruby - 通过 rvm 升级 ruby​​gems 的问题 - 2

      尝试通过RVM将RubyGems升级到版本1.8.10并出现此错误:$rvmrubygemslatestRemovingoldRubygemsfiles...Installingrubygems-1.8.10forruby-1.9.2-p180...ERROR:Errorrunning'GEM_PATH="/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/ruby-1.9.2-p180@global:/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/rub

    3. ruby - 通过 RVM (OSX Mountain Lion) 安装 Ruby 2.0.0-p247 时遇到问题 - 2

      我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search

    4. ruby - Fast-stemmer 安装问题 - 2

      由于fast-stemmer的问题,我很难安装我想要的任何ruby​​gem。我把我得到的错误放在下面。Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingfast-stemmer:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcreatingMakefilemake"DESTDIR="cleanmake"DESTDIR=

    5. ruby - 安装 Ruby 时遇到问题(无法下载资源 "readline--patch") - 2

      当我尝试安装Ruby时遇到此错误。我试过查看this和this但无济于事➜~brewinstallrubyWarning:YouareusingOSX10.12.Wedonotprovidesupportforthispre-releaseversion.Youmayencounterbuildfailuresorotherbreakages.Pleasecreatepull-requestsinsteadoffilingissues.==>Installingdependenciesforruby:readline,libyaml,makedepend==>Installingrub

    6. java - 从 JRuby 调用 Java 类的问题 - 2

      我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www

    7. ruby-on-rails - 简单的 Ruby on Rails 问题——如何将评论附加到用户和文章? - 2

      我意识到这可能是一个非常基本的问题,但我现在已经花了几天时间回过头来解决这个问题,但出于某种原因,Google就是没有帮助我。(我认为部分问题在于我是一个初学者,我不知道该问什么......)我也看过O'Reilly的RubyCookbook和RailsAPI,但我仍然停留在这个问题上.我找到了一些关于多态关系的信息,但它似乎不是我需要的(尽管如果我错了请告诉我)。我正在尝试调整MichaelHartl'stutorial创建一个包含用户、文章和评论的博客应用程序(不使用脚手架)。我希望评论既属于用户又属于文章。我的主要问题是:我不知道如何将当前文章的ID放入评论Controller。

    8. ruby-on-rails - 如何生成传递一些自定义参数的 `link_to` URL? - 2

      我正在使用RubyonRails3.0.9,我想生成一个传递一些自定义参数的link_toURL。也就是说,有一个articles_path(www.my_web_site_name.com/articles)我想生成如下内容:link_to'Samplelinktitle',...#HereIshouldimplementthecode#=>'http://www.my_web_site_name.com/articles?param1=value1¶m2=value2&...我如何编写link_to语句“alàRubyonRailsWay”以实现该目的?如果我想通过传递一些

    9. 【高数】用拉格朗日中值定理解决极限问题 - 2

      首先回顾一下拉格朗日定理的内容:函数f(x)是在闭区间[a,b]上连续、开区间(a,b)上可导的函数,那么至少存在一个,使得:通过这个表达式我们可以知道,f(x)是函数的主体,a和b可以看作是主体函数f(x)中所取的两个值。那么可以有,  也就意味着我们可以用来替换 这种替换可以用在求某些多项式差的极限中。方法: 外层函数f(x)是一致的,并且h(x)和g(x)是等价无穷小。此时,利用拉格朗日定理,将原式替换为 ,再进行求解,往往会省去复合函数求极限的很多麻烦。使用要注意:1.要先找到主体函数f(x),即外层函数必须相同。2.f(x)找到后,复合部分是等价无穷小。3.要满足作差的形式。如果是加

    10. SPI接收数据异常问题总结 - 2

      SPI接收数据左移一位问题目录SPI接收数据左移一位问题一、问题描述二、问题分析三、探究原理四、经验总结最近在工作在学习调试SPI的过程中遇到一个问题——接收数据整体向左移了一位(1bit)。SPI数据收发是数据交换,因此接收数据时从第二个字节开始才是有效数据,也就是数据整体向右移一个字节(1byte)。请教前辈之后也没有得到解决,通过在网上查阅前人经验终于解决问题,所以写一个避坑经验总结。实际背景:MCU与一款芯片使用spi通信,MCU作为主机,芯片作为从机。这款芯片采用的是它规定的六线SPI,多了两根线:RDY和INT,这样从机就可以主动请求主机给主机发送数据了。一、问题描述根据从机芯片手

    随机推荐