在Android中是否有任何助手类约定?

时间:2011-09-21 18:01:59

标签: android helper conventions

对于我添加到我的应用程序的每个Activity,我注意到在Activity的初始化中使用了很多类似的代码。一个带有静态方法的辅助类来包装这个类似的代码似乎是要走的路。

我首先想到的是单身人士课程。我可以添加静态方法/变量并在整个应用程序中使用它们。我还没有真正尝试过在Android应用程序中如何工作。再多搜索一下,我看到了创建一个扩展Application的类的问题。为此我做了一个简单的测试:

public class MyApp extends Application {
    public static String DEMOTEXT = "WORKING!";

    public static void ShowToast(Context context, String text) {
        Toast.makeText(context, text, Toast.LENGTH_SHORT).show();
    }
}

MyApp.ShowToast(this, MyApp.DEMOTEXT); // Placed on onCreate of some Activity

这完全符合我的预期。这是继续Android的方式还是有更好的约定?这样做时我还应该考虑其他什么?

顺便问一下,我应该在字符串上使用final关键字吗?这个方法怎么样?

编辑:我刚看过这个:

  

通常不需要子类Application。在大多数情况下,   静态单例可以在更模块化的情况下提供相同的功能   办法。如果您的单身人士需要全局上下文(例如注册   广播接收器),可以给出一个检索它的功能   内部使用Context.getApplicationContext()的Context   首先构建单身人士。

http://developer.android.com/reference/android/app/Application.html

我应该使用单身吗?

3 个答案:

答案 0 :(得分:3)

Application主要用于全局应用程序初始化。您可以创建自己的类,覆盖Application.onCreate()并在那里初始化静态应用程序数据。

别忘了在AndroidMainfest.xml中声明它:

<application
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:name="your.package.path.to.MyApp">

静态助手类就像你一样 惯例是在第一个位置使用小写字母,所以MyApp.showToast(...)

如果您希望避免在其他地方出现疯狂(因为它应该是一个暴力),您可以使用final作为字符串。

// this would allow ...
public static String DEMOTEXT = "WORKING!";

// ... to do this somewhere else
MyApp.DEMOTEXT = "NOT WORKING!"

答案 1 :(得分:2)

我没有试过这个,但我认为你也应该能够做到这一点。

public class MyActivity extends Activity {
    private static final String DEMOTEXT = "WORKING!";

    @Override
    public void onCreate(Bundle bundle) 
    {
        super.onCreate(bundle);
        Toast.makeText(this, DEMOTEXT, Toast.LENGTH_SHORT).show();
    }
}

现在,对于需要使用初始化的所有活动,只需扩展基本活动类。

public class SomeActivity extends MyActivity {
    ...
    // Should display the toast on create
    ...
}

答案 2 :(得分:1)

是的,只需使用单身人士。那么在这种情况下,如果你的方法是静态的,你甚至不需要单例。只是一个静态方法的类。