PreferenceManager 源码分析

2016-06-07  本文已影响1130人  虫二无边
    private void init(Context context) {
        mContext = context;
        //设置默认的SharedPreferencesName
        setSharedPreferencesName(getDefaultSharedPreferencesName(context));
    } 
    
    //我们一般用这个获取default的sp
    public static SharedPreferences getDefaultSharedPreferences(Context context) {
        return context.getSharedPreferences(getDefaultSharedPreferencesName(context),
                getDefaultSharedPreferencesMode());
    }

    //其实就是application 的packge name啦
    private static String getDefaultSharedPreferencesName(Context context) {
       return context.getPackageName() + "_preferences";
    }
    
    private static int getDefaultSharedPreferencesMode() {
        return Context.MODE_PRIVATE;
    }
    
    
    
        
  //PreferenceScreen 的处理
   public PreferenceScreen inflateFromResource(Context context, int resId,
           PreferenceScreen rootPreferences) {
       // Block commits
       setNoCommit(true);

       final PreferenceInflater inflater = new PreferenceInflater(context, this);
       rootPreferences = (PreferenceScreen) inflater.inflate(resId, rootPreferences, true);
       rootPreferences.onAttachedToHierarchy(this);

       // Unblock commits
       setNoCommit(false);

       return rootPreferences;
   }

     //剩下的就是一些观察者的实现了.在Activity stop的时候, 广播给观察者. 我擦, 看到这里发现这个类太简单了. 没什么值得研究的.
    void dispatchActivityStop() {
        List<OnActivityStopListener> list;
        
        synchronized (this) {
            if (mActivityStopListeners == null) return;
            list = new ArrayList<OnActivityStopListener>(mActivityStopListeners);
        }

        final int N = list.size();
        for (int i = 0; i < N; i++) {
            list.get(i).onActivityStop();
        }
    }
    
     public interface OnActivityStopListener {
            
            /**
             * See Activity's onStop.
             */
            void onActivityStop();
        }
上一篇下一篇

猜你喜欢

热点阅读