完美解决Android8.0之后StartService报错问题

为了缩短冷启动时间,采取异步初始化sdk

步骤:

1.Application onCreate() 

var intent = Intent(instance, InitSDKService::class.java)

intent.action ="com.initsdkservice.init"

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){

    InitSDKService().enqueueWork(this,intent)

}else{

  startService(intent)

}

2.


class InitSDKService : JobIntentService{

    constructor() :super()

    /**

* Unique job ID for this service.

*/

    val JOB_ID =1000

    /**

* Convenience method for enqueuing work in to this service.

*/

    fun enqueueWork(context: Context, work: Intent) {

        enqueueWork(context, InitSDKService::class.java,JOB_ID, work)

}

    override fun onHandleWork(intent: Intent) {

        //数据库初始化

        DataManager.init(BaseApplication.instance)

}

}

3.AndroidManifest.xml

<service android:name=".InitSDKService"

    android:permission="android.permission.BIND_JOB_SERVICE">

    <intent-filter >

        <action android:name="com.initsdkservice.init"/>

    </intent-filter>

</service>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容