Skip to content

Commit

Permalink
fix: 优化OnDestory
Browse files Browse the repository at this point in the history
  • Loading branch information
azhon committed Feb 22, 2022
1 parent 24b278f commit 15973e3
Show file tree
Hide file tree
Showing 4 changed files with 77 additions and 17 deletions.
8 changes: 0 additions & 8 deletions app/src/main/java/com/azhon/app/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -167,12 +167,4 @@ public void downloading(int max, int progress) {
public void onButtonClick(int id) {
Log.e("TAG", String.valueOf(id));
}

@Override
protected void onDestroy() {
super.onDestroy();
if (manager != null) {
manager.onDestroy();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ public class UpdateConfiguration {
/**
* 下载过程回调
*/
private List<OnDownloadListener> onDownloadListeners = new ArrayList<>();
private final List<OnDownloadListener> onDownloadListeners = new ArrayList<>();
/**
* 按钮点击事件回调
*/
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package com.azhon.appupdate.listener;

import android.app.Activity;
import android.app.Application;
import android.os.Bundle;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

/**
* 项目名: AppUpdate
* 包名 com.azhon.appupdate.listener
* 文件名: LifecycleCallbacksAdapter
* 创建时间: 2022/2/22 on 13:52
* 描述:
*
* @author 阿钟
*/


public abstract class LifecycleCallbacksAdapter implements Application.ActivityLifecycleCallbacks {
@Override
public void onActivityCreated(@NonNull Activity activity, @Nullable Bundle savedInstanceState) {

}

@Override
public void onActivitySaveInstanceState(@NonNull Activity activity, @NonNull Bundle outState) {

}

@Override
public void onActivityStarted(@NonNull Activity activity) {

}

@Override
public void onActivityResumed(@NonNull Activity activity) {

}

@Override
public void onActivityPaused(@NonNull Activity activity) {

}

@Override
public void onActivityStopped(@NonNull Activity activity) {

}

@Override
public void onActivityDestroyed(@NonNull Activity activity) {

}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.azhon.appupdate.manager;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.text.TextUtils;
Expand All @@ -9,11 +10,14 @@
import com.azhon.appupdate.base.BaseHttpDownloadManager;
import com.azhon.appupdate.config.UpdateConfiguration;
import com.azhon.appupdate.dialog.UpdateDialogActivity;
import com.azhon.appupdate.listener.LifecycleCallbacksAdapter;
import com.azhon.appupdate.service.DownloadService;
import com.azhon.appupdate.utils.ApkUtil;
import com.azhon.appupdate.utils.Constant;
import com.azhon.appupdate.utils.LogUtil;

import androidx.annotation.NonNull;

/**
* 项目名: AppUpdate
* 包名 com.azhon.appupdate.manager
Expand Down Expand Up @@ -89,22 +93,32 @@ public class DownloadManager {
/**
* 框架初始化
*
* @param context 上下文
* @param activity 上下文
* @return {@link DownloadManager}
*/
public static DownloadManager getInstance(Context context) {
public static DownloadManager getInstance(Activity activity) {
if (manager == null) {
synchronized (DownloadManager.class) {
if (manager == null) {
manager = new DownloadManager(context);
manager = new DownloadManager(activity);
}
}
}
return manager;
}

private DownloadManager(Context context) {
this.context = context.getApplicationContext();
private DownloadManager(Activity activity) {
this.context = activity.getApplicationContext();
final String className = activity.getClass().getName();
activity.getApplication().registerActivityLifecycleCallbacks(new LifecycleCallbacksAdapter() {
@Override
public void onActivityDestroyed(@NonNull Activity activity) {
super.onActivityDestroyed(activity);
if (className.equals(activity.getClass().getName())) {
onDestroy();
}
}
});
}

/**
Expand Down Expand Up @@ -392,10 +406,8 @@ private boolean checkVersionCode() {

/**
* 宿主Activity被销毁,需要移除
* {@link com.azhon.appupdate.listener.OnDownloadListener}
* {@link com.azhon.appupdate.listener.OnButtonClickListener}
*/
public void onDestroy() {
private void onDestroy() {
if (configuration != null) {
configuration.setButtonClickListener(null);
configuration.getOnDownloadListener().clear();
Expand Down

0 comments on commit 15973e3

Please sign in to comment.