赞
踩
android.app.RemoteServiceException: Context.startForegroundService() did not then call Service.startForeground()
通过startForegroundService(Intent intent)启动服务时,如果服务没有及时(5s)使用startForeground()响应,那么就会报这个异常。
在Service的 onCreate 或者 onStartCommand 里我们会调用startForeground 方法。很多时候我们都会构造一个Notification。
这里我们可以将构建Notification的时机提前,使用全局静态变量的方式构建好,然后再调用startForeground方法,Service里直接取即可。
因为Service的生命周期方法是在主线程中Handler调用的,所以,如果调用时主线程阻塞,则会引起ANR和崩溃。
如果是非常及时需要刷新或提示,非得立马调用startForegroundService的。我们可以手动排除调用时机前后的耗时方法。
如果不是及时方法,可以通过IDelHandler的方式进行处理。添加IdelHandler消息,当主线程稍微闲置时再调用startForegroundService
网上还有很多解决方案。但都不是从根本上进行解决的。可能也有用,大家可以参考。我理解,解决问题还是要从根源上进行避免
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。