当我为已经实例化的类调用Class.getInstance时会发生什么?

时间:2016-10-06 22:31:33

标签: java android

当我在同一个方法中调用两次Class.getInstance时会发生什么?

例如:

private void widgetListeners() {
        notifyNews.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
            @Override
            public boolean onPreferenceChange(Preference preference, Object newValue) {
                if (notifyNews.isChecked()) {
                    FirebaseMessaging.getInstance().subscribeToTopic(getString(R.string.news_subscriber));
                } else {
                    FirebaseMessaging.getInstance().unsubscribeFromTopic(getString(R.string.news_subscriber));
                }
                return true;
            }
        });
        notifyVersion.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
            @Override
            public boolean onPreferenceChange(Preference preference, Object newValue) {
                if (notifyVersion.isChecked()) {
                    FirebaseMessaging.getInstance().unsubscribeFromTopic("Version");
                } else {
                    FirebaseMessaging.getInstance().unsubscribeFromTopic(Version"));
                }
                return true;
            }
        });
    }

如果我在FirebaseMessaging.getInstance()方法主体的顶部调用widgetListeners()一次并将其存储在变量中,或者我只是在每个onPreferenceChange中调用,或者我坚持我和我已经在上面做过了吗?

注意:我在widgetListeners()扩展onCreateView类的片段中调用PreferenceFragment

1 个答案:

答案 0 :(得分:1)

getInstance()通常是singleton pattern的工件。从高级别来看,这意味着您只能访问此类的一个实例,该实例是在您第一次访问它时创建的。

你已经完成的工作应该运作良好。该实例已经为您存储,因此在您的情况下,实际上无需将其存储在另一个引用中。