Skip to content

Commit 399cda8

Browse files
committed
修复内存泄漏问题
1 parent 009389e commit 399cda8

File tree

3 files changed

+17
-27
lines changed

3 files changed

+17
-27
lines changed

LibMediaPicker/src/main/java/me/bzcoder/mediapicker/SmartMediaPicker.java

Lines changed: 15 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,10 @@
3535
* @date : 2019/3/14 21:38
3636
*/
3737
public class SmartMediaPicker {
38-
private volatile static SmartMediaPicker instance;
3938
private FragmentManager manager;
4039
private CameraDialogFragment cameraDialogFragment;
41-
private WeakReference<FragmentActivity> fragmentActivity;
42-
private WeakReference<Fragment> fragment;
40+
private WeakReference<FragmentActivity> fragmentActivity;
41+
private WeakReference<Fragment> fragment;
4342
private MediaPickerConfig config;
4443

4544
private SmartMediaPicker() {
@@ -51,42 +50,32 @@ private SmartMediaPicker() {
5150
public void show() {
5251
//只启动照片选择
5352
if (config.getMediaPickerEnum() == MediaPickerEnum.PHOTO_PICKER) {
54-
if (fragmentActivity.get() != null) {
53+
if (fragmentActivity != null) {
5554
PhotoPickUtils.getAllSelector(fragmentActivity.get(), config);
56-
} else if (fragment.get() != null) {
55+
} else if (fragment != null) {
5756
PhotoPickUtils.getAllSelector(fragment.get(), config);
5857
}
5958
}
6059
//只启动相机
6160
else if (config.getMediaPickerEnum() == MediaPickerEnum.CAMERA) {
62-
if (fragmentActivity.get() != null) {
61+
if (fragmentActivity != null) {
6362
CameraUtils.startCamera(fragmentActivity.get(), config);
64-
} else if (fragment.get() != null) {
63+
} else if (fragment != null) {
6564
CameraUtils.startCamera(fragment.get(), config);
6665
}
6766

6867
}
6968
//启动下方弹框
7069
else {
71-
if (fragmentActivity.get() != null) {
70+
if (fragmentActivity != null) {
7271
cameraDialogFragment.setConfig(fragmentActivity.get(), config);
73-
} else if (fragment.get() != null) {
72+
} else if (fragment != null) {
7473
cameraDialogFragment.setConfig(fragment.get(), config);
7574
}
7675
cameraDialogFragment.show(manager, "cameraDialogFragment");
7776
}
7877
}
7978

80-
public static SmartMediaPicker getInstance() {
81-
if (instance == null) {
82-
synchronized (SmartMediaPicker.class) {
83-
if (instance == null) {
84-
instance = new SmartMediaPicker();
85-
}
86-
}
87-
}
88-
return instance;
89-
}
9079

9180
/**
9281
* 根据路径得到视频缩略图
@@ -159,8 +148,8 @@ private void setConfig(MediaPickerConfig config) {
159148
*/
160149
public static class Builder {
161150
private FragmentManager manager;
162-
private Fragment fragment;
163-
private FragmentActivity fragmentActivity;
151+
private WeakReference<Fragment> fragment;
152+
private WeakReference<FragmentActivity> fragmentActivity;
164153
private boolean countable;
165154
private boolean originalEnable;
166155
private boolean isMirror;
@@ -176,13 +165,13 @@ public static class Builder {
176165
private MediaPickerEnum mediaPickerType;
177166

178167
private Builder(FragmentActivity fragmentActivity) {
179-
this.fragmentActivity = fragmentActivity;
168+
this.fragmentActivity = new WeakReference<>(fragmentActivity);
180169
this.manager = fragmentActivity.getSupportFragmentManager();
181170
setDefault();
182171
}
183172

184173
private Builder(Fragment fragment) {
185-
this.fragment = fragment;
174+
this.fragment = new WeakReference<>(fragment);
186175
this.manager = fragment.getChildFragmentManager();
187176
setDefault();
188177
}
@@ -272,11 +261,11 @@ public Builder withMediaPickerType(MediaPickerEnum mediaPickerType) {
272261

273262

274263
public SmartMediaPicker build() {
275-
SmartMediaPicker smartMediaPicker = SmartMediaPicker.getInstance();
264+
SmartMediaPicker smartMediaPicker = new SmartMediaPicker();
276265
MediaPickerConfig config = new MediaPickerConfig();
277266
smartMediaPicker.manager = manager;
278-
smartMediaPicker.fragment = new WeakReference<>(fragment);
279-
smartMediaPicker.fragmentActivity = new WeakReference<>(fragmentActivity);
267+
smartMediaPicker.fragment = fragment;
268+
smartMediaPicker.fragmentActivity = fragmentActivity;
280269
config.setCountable(countable);
281270
config.setMirror(isMirror);
282271
config.setOriginalEnable(originalEnable);

LibMediaPicker/src/main/java/me/bzcoder/mediapicker/camera/CameraDialogFragment.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,6 @@ public void setConfig(Fragment fragment, MediaPickerConfig config) {
117117
this.fragment = new WeakReference<>(fragment);
118118
this.config = config;
119119
this.fragmentActivity = null;
120-
121120
}
122121

123122
public void setConfig(FragmentActivity fragmentActivity, MediaPickerConfig config) {

app/src/main/java/com/bzcoder/mediapicker/MainActivity.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import android.content.Intent;
44
import android.os.Bundle;
5+
import android.os.Handler;
6+
import android.os.Message;
57
import android.support.annotation.Nullable;
68
import android.support.v7.app.AppCompatActivity;
79
import android.view.View;

0 commit comments

Comments
 (0)