Activity 类只能在开发/调试期间启动吗?

Tre*_*vor 3 android android-view android-activity 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. 是否有任何类型的工作流程或测试框架可以用来改进我的做法?

Com*_*are 5

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

嗯,ActivityInstrumentationTestCase2确实如此,新的ActivityTestRule. 我不记得玩过ActivityUnitTestCase

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

不。对他们来说启动它并不容易,但它是导出的并且有一个<intent-filter>,所以有人可以找到一种方法。

仅将 Activity 类用于开发是否安全?

debug假设您使用的是 Android Studio,我会将它们放入您的源集中。以下是一个示例项目,其中包含生产启动器活动main和诊断活动debug。在release构建中,诊断活动甚至不会发布。