Android - 使用活动的最佳方式是什么(最佳实践)

时间:2012-01-14 17:37:25

标签: android android-activity

我正在编写我的第一个Android应用程序,并希望获得良好的编码实践。我有一个包含以下内容的活动:

Button btn = (Button)findViewById(R.id.btnPressMe);

        btn.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub
                startActivity(new Intent(Main.this, SecondScreen.class));
            }
        });

startActivity(new Intent("net.mysite.MediaPlayer.CLEARSCREEN"));

的AndroidManifest.xml:

<activity
        android:name=".landingpage"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="net.mysite.MediaPlayer.CLEARSCREEN" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

3 个答案:

答案 0 :(得分:2)

所描述的第一种方式最适合在您的应用程序中使用,另一种方式用于其他应用程序来调用您的活动。

答案 1 :(得分:1)

阿布,

你的问题的答案在很大程度上取决于你想要完成的事情。请记住,到目前为止提供的其他答案在做出决定时都有宝贵的意见。

Android哲学

Android的设计使得用户最终决定哪些应用程序负责哪些任务。应用程序可能会超越它们,但只有在它们是唯一合理能够处理该任务的情况下才应该这样做 OR 如果整个应用程序的运行是必要的。

Intent标记用户或系统或应用程序执行所述任务的愿望。仅仅因为制作Intent并不要求用户知道或启动它,尽管通常是最好的。但是,如果Intent对用户隐藏,则可能会质疑它是否应该是Intent。这仍然是开发社区正在制定的事情,并且有支持和反对这种做法的倡导者。

静态类意图

  

startActivity(new Intent(Main.this,SecondScreen.class));

当您无法信任其他应用程序来有效处理所需任务时,应使用这些。这些类型的任务也应该被用户“隐藏”,因为用户可能不关心正在发生什么或者正在做什么,只要它完成。此外,它们只应用于不受更改的稳定代码。正如Snicolas所说(我个人同意):

  

课程的生命周期可能会有所不同。

操作字符串意图

  

startActivity(new Intent(“net.mysite.MediaPlayer.CLEARSCREEN”));

应尽可能使用这些。但是,只有当其他应用程序可以执行任务而不破坏您自己的应用程序稳定时,才应使用它们。操作字符串的设计方式很少,不会被其他任何人调用,但要理解,如果多个应用程序可以处理它,操作将提示用户。

类似于这样的想法:“我使用Microsoft Office进行数据库和文字处理,但当我需要电子表格时,我使用的是Open Office”。两者都提供兼容的结果,但出于某种原因,优选一种。这是有效的,因为Word或Access不需要Excel才能正常工作。任何其他工作部分都不需要Open Office的等效项。它们都安装在一起但是独立工作,因为它们完全使用不同的资源和数据。

希望这有帮助,

FuzzicalLogic

答案 2 :(得分:0)

最好不要使用静态类名来调用intent。类可以在应用程序的生命周期中变化。稍后,如果您决定此活动应该针对另一个类进行更改,则只需使用AndroidManifest方式在一个且仅一个位置更改它。

此外,定义此类配置可为其他应用程序提供调用活动以完成服务的方法。这就是Android让应用程序通过意图进行通信的实际能力。