Android的最佳设计实践与Java不同?

时间:2014-01-24 12:58:55

标签: java android design-patterns

让我们想象一下,如果首选项'选项设置为true,我们只想执行某些操作。它可能是情况的类图:

class diagram

PreferencesActivity getDoSomethingOptionValue() 中的实施可能如下:

public boolean getDoSomethingOptionValue(){
    SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getActivity()
    return settings.getString("doSomethingOptionValue", "false");
}

在Java (我的意思是,没有Android), MainActivity 应该使用PreferencesActivity中的get方法来获取值:< / p>

if (PreferencesActivity.getDoSomethingOptionValue()){
    // TODO     
    executeSomething()
}

但与Android (我喜欢this tutorial about how to communicate two running activities)沟通活动实际上更复杂。 所以我被邀请直接从MainActivity 查看偏好设置。代码会更简单,更有效。它可能是这样的:

SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getActivity()
if (settings.getString("doSomethingOptionValue", "false"){
    // TODO     
    executeSomething()
}

Android的推荐做法是什么?

1 个答案:

答案 0 :(得分:0)

  1. “不要重复自己”的原则仍然适用,即如果您使用两个位置的相同代码,则将其分解为常用方法。一个例子是Settings类中的静态方法:

    public class Settings {
        public static boolean getDoSomethingOptionValue(Context context) {
            SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);
            return settings.getString("doSomethingOptionValue", "false");
        }
    }
    

    (当然,如果您的项目需要,可以使用更复杂的选项(非静态方法,通过依赖注入可用的设置对象)。)

  2. 您不需要在PreferencesActivity中手动阅读设置,addPreferencesFromResource可以为您做到这一点。