2014-06-23 2 views
1

제목에서 말한 것처럼 onSharedPreferenceChanged() 메서드는 배수라고하며 내 경우에는 문제가됩니다. 이 방법에서는 암호를 암호화하고 "암호화"는 여러 번 호출되므로 응용 프로그램이 충돌하고 2Mo의 sharedPreferences 파일이 생깁니다.onSharedPreferenceChanged() 여러 번 호출

public class ParametreActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener { 
    @SuppressWarnings("deprecation") 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     addPreferencesFromResource(R.xml.parametres); 

     PreferenceManager 
       .getDefaultSharedPreferences(this) 
         .registerOnSharedPreferenceChangeListener(this); 
    } 

    @Override 
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { 

    String mdp; 
    if(key.equals("mdp")) { 
      mdp = sharedPreferences.getString(key, null); 
      if(mdp != null) { 
       try { 
        sharedPreferences.edit().putString(key, SimpleCrypto.encrypt(mdp)).apply(); 
       } catch (Exception e) {} 
      } 
    } 
    } 
} 
+0

나는이 메소드에서 반복적 인 Editor 객체에서'.commit'을 발견했다. 어떻게 피할 수 있는가? – user265638

+0

Editor 개체는 어디에 있습니까? 더 이상 나는'.commit();을 보지 않는다. – greenapps

+0

업데이트 됨 (Do stuf ...에 있음) – user265638

답변

0

좋아요, 나는 해결책을 발견 (의 verry 꽤되지하지만 그것이 작동 : P) 난 그냥 두 번 호출하지 할, 부울을 사용

여기

내 코드입니다 커밋