Android 는 IntentService 를 사용 하여 apk 업데이트 예제 코드 를 진행 합 니 다.
4504 단어 IntentServiceapk업데이트
비 교 를 통 해 알 수 있 듯 이 IntentService 를 사용 하여 시간 소모 작업 에 대한 포장 을 실 현 했 습 니 다.저 희 는 IntentService 중의 onHandleIntent 방법 만 실현 하면 그 중에서 시간 소모 작업 을 처리 할 수 있 습 니 다.다운로드 문 제 를 처리 할 때 intentservice 를 사용 할 때 우아 하 게 진 도 를 바 꿀 수 있 는 실현 방법 을 발견 하지 못 했 습 니 다.그래서 저 는 현지 방송 형식 으로 진도 갱신 을 했 습 니 다.
현재 상태 판단 을 추 가 했 습 니 다.프론트 상태 에 있 을 때 직접 설치 합 니 다.백 스테이지 에 있 을 때 알림 팝 업 창 을 클릭 하여 설치 합 니 다.예제 는 다음 과 같 습 니 다.
먼저 라디오 를 만들다
public static class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
switch (intent.getAction()) {
case ACTION_TYPE_PREPARE:
if (downloadCallback != null) {
downloadCallback.onPrepare();
}
break;
case ACTION_TYPE_PROGRESS:
int progress = intent.getIntExtra("progress", 0);
// Log.d("progress", "|- " + progress + " -|");
if (downloadCallback != null) {
downloadCallback.onProgress(progress);
}
break;
case ACTION_TYPE_COMPLETE:
String file_path = intent.getStringExtra("file_path");
if (!TextUtils.isEmpty(file_path)) {
File file = new File(file_path);
if (file.exists()) {
if (downloadCallback != null) {
downloadCallback.onComplete(file);
}
}
}
break;
case ACTION_TYPE_FAIL:
String error = intent.getStringExtra("error");
if (downloadCallback != null) {
downloadCallback.onFail(error + "");
}
break;
}
}
그리고 IntentService 에서 로 컬 방송 을 초기 화하 고 메 시 지 를 보 냅 니 다.
@Override
public void onCreate() {
super.onCreate();
mLocalBroadcastManager = LocalBroadcastManager.getInstance(this);
}
//
private void progress(int progress) {
Intent intent = new Intent(FileDownloaderManager.ACTION_TYPE_PROGRESS);
intent.putExtra("progress", progress);
mLocalBroadcastManager.sendBroadcast(intent);
}
private void downApk(String url) {
.....
.....
progress(progress);
.....
.....
}
activity 에서 사용
mLocalBroadcastManager = LocalBroadcastManager.getInstance(mContext);
mBroadcastReceiver = new MyBroadcastReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(ACTION_TYPE_PREPARE);
intentFilter.addAction(ACTION_TYPE_PROGRESS);
intentFilter.addAction(ACTION_TYPE_COMPLETE);
intentFilter.addAction(ACTION_TYPE_FAIL);
mLocalBroadcastManager.registerReceiver(mBroadcastReceiver, intentFilter);
// ondestory
mLocalBroadcastManager.unregisterReceiver(mBroadcastReceiver);
상기 소스 코드 는 이미 포장 되 었 으 므 로 구체 적 인 조작 절 차 를 다음 과 같이 사용 할 수 있 습 니 다.|-초기 화 및 등록 리 셋
//
FileDownloaderManager.init(context)
// ,
FileDownloaderManager.registerDownload(object : FileDownloaderManager.DownloadCallback {
override fun onComplete(file: File) = mainView.downloadSucc(file)
override fun onFail(msg: String?) = Unit
override fun onProgress(progress: Int) = mainView.onProgress(progress)
override fun onPrepare() = Unit
})
//
FileDownloaderManager.download(url)
|-다운로드 완료 후 자원 초기 화
FileDownloaderManager.unbinder()
원본 주소:원본 주소 문서 주소:문서 주소
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Flutter kakao sdk apk 실행 안될때카카오톡로그인 을 구현하는 도중에 릴리즈와 디버그 키를 모두 넣어주었는데도 apk파일을 배포할때 키값이 다르다면서 실행이 전혀 안되었다.. 난 릴리즈와 디버그 키를 다 넣어주었는데도..실행이 안되다 보니까 이게 뭐지...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.