1818
1919import java .io .File ;
2020import java .io .IOException ;
21+ import java .lang .ref .WeakReference ;
2122import java .util .ArrayList ;
2223import java .util .HashMap ;
2324import java .util .LinkedHashMap ;
@@ -49,7 +50,7 @@ public class ConcealPrefRepository {
4950
5051 @ SuppressLint ("CommitPrefEdits" )
5152 private ConcealPrefRepository (@ NonNull PreferencesBuilder builder ){
52- mContext = builder .mContext ;
53+ mContext = builder .mContext . get () ;
5354 mKeyChain = builder .mKeyChain ;
5455 mEnabledCrypto = builder .mEnabledCrypto ;
5556 mEnableCryptKey = builder .mEnableCryptKey ;
@@ -851,7 +852,7 @@ public void apply() {
851852 ****************************************************************************************/
852853 public static class PreferencesBuilder {
853854
854- private Context mContext ;
855+ private WeakReference < Context > mContext ;
855856 private CryptoConfig mKeyChain = CryptoConfig .KEY_256 ;
856857 private String mPrefname = null ;
857858 private String mFolderName = null ;
@@ -862,7 +863,7 @@ public static class PreferencesBuilder{
862863 private OnDataChangeListener onDataChangeListener ;
863864
864865 public PreferencesBuilder (Context context ) {
865- mContext = context ;
866+ mContext = new WeakReference <>( context . getApplicationContext ()) ;
866867 }
867868
868869 public PreferencesBuilder useDefaultPrefStorage (){
@@ -932,6 +933,10 @@ public PreferencesBuilder setPrefListener(OnDataChangeListener listener){
932933 */
933934 public ConcealPrefRepository create (){
934935
936+ if (this .mContext == null ){
937+ throw new RuntimeException ("Context cannot be null" );
938+ }
939+
935940 if (mFolderName !=null ){
936941 File file = new File (mFolderName );
937942 try {
@@ -947,10 +952,10 @@ public ConcealPrefRepository create(){
947952 }
948953
949954 if (mPrefname !=null ){
950- sharedPreferences = mContext .getSharedPreferences (CipherUtils .obscureEncodeSixFourString (mPrefname .getBytes ()), MODE_PRIVATE );
955+ sharedPreferences = this . mContext . get () .getSharedPreferences (CipherUtils .obscureEncodeSixFourString (mPrefname .getBytes ()), MODE_PRIVATE );
951956 }
952957 else {
953- sharedPreferences = PreferenceManager .getDefaultSharedPreferences (mContext );
958+ sharedPreferences = PreferenceManager .getDefaultSharedPreferences (this . mContext . get () );
954959 }
955960
956961 return new ConcealPrefRepository (this );
0 commit comments