V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  LuckHard  ›  全部回复第 1 页 / 共 1 页
回复总数  2
2017-02-04 19:14:59 +08:00
回复了 sighforever 创建的主题 Android [求助] 安卓在用户哪边报了这样一个错,哪位大神给看看!
@guiping
我这里已经解决了。
在 JobService.onStartService 中 return false 的情况下应该是不需要调用 jobFinished 的。

参考:
https://code.tutsplus.com/tutorials/using-the-jobscheduler-api-on-android-lollipop--cms-23562
https://developer.android.com/reference/android/app/job/JobService.html
中文在这里:
http://wiki.jikexueyuan.com/project/android-weekly/issue-146/using-jobscheduler.html
http://mahong978.top/2016/08/19/android-job-scheduler/

环信这里应该是个错误调用,目的是想在满足条件时唤起自己的服务,这是一个快速操作, return false 是对的,但不用调用 jobFinished ,把 jobFinished 的调用去掉后即可修复。
(因为你都没有 return true 把信息加进去,那你调用 jobFinished 时系统想 getUid 时当然是空指针)
(讲道理,差点因为这个问题年都没法舒服过,改天应该和环信那边聊聊)
2017-01-25 14:44:40 +08:00
回复了 sighforever 创建的主题 Android [求助] 安卓在用户哪边报了这样一个错,哪位大神给看看!
@sighforever
我也遇到了这个问题,目前推测可能是集成环信造成,不知道你们是不是也是这个情况。

还是之前的这个 issue
https://code.google.com/p/android/issues/detail?id=104302
问题的描述很明显,在某些 android 系统上有一个系统 bug ,就是如果在 JobService.onStartService 回调中调用 JobService.jobFinished 方法会出现一个随机 Crash 导致服务挂掉。
而环信代码中就是这么调用的。
具体可见 com.hyphenate.chat.EMJobService 类。

这个问题只在上线环信后出现,并且代码也与描述相符,所以推测应该是集成环信造成的。
目前正在想解决方案,有大神的话麻烦帮忙看看。
自己有三个,不知道可不可行,麻烦大家也看一下:
1 ,通过 android 的相同路径下代码覆盖的原则,重写 com.hyphenate.chat.EMJobService 类实现不调用 jobFinished 的逻辑。(不知道会不会有更大的坑)
2 ,找环信老版本的 SDK 看看,也许可以避免。(问题同上,这是一个降级操作,感觉坑更大)
3 ,去找环信沟通。(马上三十了,能解决的希望……有点渺茫……)
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2651 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 10ms · UTC 02:49 · PVG 10:49 · LAX 18:49 · JFK 21:49
Developed with CodeLauncher
♥ Do have faith in what you're doing.