使用JobIntentService寫一個下載服務

利用封裝好的BaseActivity方法開啓JobIntentService

val url = "https://raw.githubusercontent.com/xuexiangjys/XUpdate/master/apk/xupdate_demo_1.0.2.apk"
updateApk(url,APK_DOWNLOAD_SUCCESSFUL)
//註冊apk下載成功廣播
registerReceiver(receiver, APK_DOWNLOAD_SUCCESSFUL)

JobIntentService類

import android.content.Context
import android.content.Intent
import androidx.core.app.JobIntentService
import androidx.localbroadcastmanager.content.LocalBroadcastManager

/**
 * apk下載服務
 */
class HttpUpdateService : JobIntentService() {

    private val jobId = 10001

    /**
     * 開啓服務
     */
    fun enqueueWork(context: Context, work: Intent) {
        enqueueWork(context, HttpUpdateService::class.java, jobId, work)
    }

    override fun onHandleWork(intent: Intent) {
        intent.getStringExtra("url")?.let { url ->
            intent.getStringExtra("apkName")?.let { apkName ->
                intent.getStringExtra("actions")?.let { actions ->
                    if (HttpHelper.downloadFile(url, HttpHelper.createFilePath(apkName))) {
                        //發送apk下載成功廣播
                        LocalBroadcastManager.getInstance(this).sendBroadcast(Intent(actions))
                    }
                }
            }
        }
    }

}

接收到下載成功的廣播便可以進行下一步操作

    private val receiver = object : BroadcastReceiver() {
        override fun onReceive(context: Context?, intent: Intent?) {
            intent?.let {
                if (it.action == APK_DOWNLOAD_SUCCESSFUL){
                    //apk下載成功
                    showInstallationDialog(PERMISSION_REQUEST_CODE)
                }
            }
        }
    }

showInstallationDialog()方法是安裝apk的操作,具體代碼可見BaseActivity

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章