>

사용자가 로그인하기 위해 공유 환경 설정을 사용하는 응용 프로그램을 만들었습니다. 사용자의 비밀번호는 환경 설정에 저장됩니다. 내 문제는 사용자가 자신의 암호를 변경하려는 경우 환경 설정에서 암호를 어떻게 변경할 수 있습니까?

  • 답변 # 1

    SharedPreferences prefs = ... // you already know how to use prefs and have one of this objects
    Editor editor = prefs.edit();
    editor.putString("password", "new value");
    editor.apply();
    
    

  • 답변 # 2

    apply() 사용   commit() 대신

    Editor.apply() 를 사용하는 것이추천   commit() 대신   apply() 때문에  백그라운드에서 비동기식으로 작동하므로 ANR이 발생할 가능성이 적습니다.

    getSharedPreferences("FILE_NAME", 0 /*FILE_MODE*/)
         .edit()
         .putString("password", "new value")
         .apply();
    
    

    apply() 에 대한 의사의 언급 ,

    와이즈 비즈

    Commit your preferences changes back from this Editor to the SharedPreferences object it is editing. This atomically performs the requested modifications, replacing whatever is currently in the SharedPreferences.

    Note that when two editors are modifying preferences at the same time, the last one to call apply wins.

    Unlike commit(), which writes its preferences out to persistent storage synchronously, apply() commits its changes to the in-memory SharedPreferences immediately but starts an asynchronous commit to diskand you won't be notified of any failures. If another editor on this SharedPreferences does a regular commit() while a apply() is still outstanding, the commit() will block until all async commits are completed as well as the commit itself.

    As SharedPreferences instances are singletons within a process, it's safe to replace any instance of commit() with apply() if you were already ignoring the return value.

    You don't need to worry about Android component lifecycles and their interaction with apply() writing to disk. The framework makes sure in-flight disk writes from apply() complete before switching states.

관련 자료

  • 이전 PHP로 파일을 업로드 할 때 Linux가 확장자없이 임시 파일을 생성하는 이유는 무엇입니까?
  • 다음 javascript - 여러 계열의 highcharts treemap - 모두를 범례에 표시