可以在开发/调试期间使Activity类可以启动吗?

时间:2015-06-16 21:08:34

标签: android android-activity android-view android-testing

我面临的一个常见情况是,我希望在屏幕上显示自定义View,同时将其作为大型应用程序的一部分进行开发。我意识到单元测试存在,特别是使用ActivityUnitTestCase,但据我所知,这些框架实际上并没有在屏幕上明显地附加组件。

目前,我倾向于这样做的方法是将组件放置在应用程序中实际使用的任何位置。这通常意味着需要等待一段时间才能启动应用程序,或者在应用程序可见之前浏览应用程序的各个部分,这可能会变得很麻烦。

我发现的更好的方法是在应用程序中创建一个纯Activity,仅用于测试目的(例如,只显示我正在开发的自定义View)显示我正在处理的自定义View(或其他)。为此,我在清单中为Activity分配的唯一目标过滤器是android.intent.action.MAIN,而不是 android.intent.category.LAUNCHER。然后,我可以在Android Studio中简单地创建一个运行/调试配置,直接启动Activity。这个,据我所知,实际上允许我拥有Activity类,这些类只能由我从IDE启动。

我的问题是:

  1. 省略android.intent.category.LAUNCHER是否保证应用程序的用户无法以任何方式启动Activity,也不知道它的存在?仅Activity类用于开发是否安全?

  2. 是否有任何类型的工作流程或测试框架可用于改进我的工作方式?

3 个答案:

答案 0 :(得分:3)

  

我意识到单元测试存在,特别是使用ActivityUnitTestCase,但据我所知,这些框架实际上并没有在屏幕上明显地附加组件。

嗯,ActivityInstrumentationTestCase2和新ActivityTestRule一样。我不记得和ActivityUnitTestCase一起玩。

  

省略android.intent.category.LAUNCHER是否保证应用程序的用户无法以任何方式启动该活动,也不知道它的存在?

没有。它们很容易启动它,但它被导出并有<intent-filter>,所以有人可以找到方法。

  

仅使用Activity类进行开发是否安全?

我会将它们放在您的debug源集中,假设您使用的是Android Studio。在main中具有生产启动器活动并在debug中具有诊断活动的Here is a sample project。在release版本中,诊断活动甚至不会发布。

答案 1 :(得分:-1)

为什么不宣布像

这样的价值
public static boolean IS_DEBUG = true;

然后在你要展示它的任何部分,只需加入像

这样的条件
if (IS_DEBUG) {
    your_develop_view.setVisibility(View.VISIBLE);
    //...
}
else {
    your_develop_view.setVisibility(View.GONE);
}
完成开发后

在发布之前,只需更改

IS_DEBUG = false;

答案 2 :(得分:-1)

只需使用BuildConfig.DEBUG

,而不是定义自己的IS_DEBUG