3535 * @date : 2019/3/14 21:38
3636 */
3737public 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 );
0 commit comments