System.getProperty(“fast”)如何工作?

时间:2011-04-26 20:15:52

标签: java android debugging conditional-compilation

在我搜索Java中的#ifdef-equivalent时,我找到了一个很好的线程来描述一种进行条件编译的方法:#ifdef #ifndef in Java

我不明白这是如何运作的:

  1. 为什么是第二种形式 (System.getProperty)优于 第一个(假/真)?
  2. “fast”不是Java之一 predefined properties。这个 可能意味着我必须定义 它在我的代码中的某个地方。是什么 在Android中执行此操作的最佳位置 应用程序吗? onCreate()是个好地方吗?

2 个答案:

答案 0 :(得分:3)

1)第一个将由编译器优化。也就是说,您将布尔属性设置为'true',编译器将丢弃条件的else分支。如果将其设置为false,则将丢弃then-branch。如果要快速切换到慢速,则必须重新编译代码,反之亦然。

2)启动应用时,您必须定义系统属性。设置VM范围的属性是一种优先操作。我不是专家,但我怀疑你可以在Android应用程序的onCreate事件中设置这些。 System.getProperty背后的核心思想是,通过传递额外的命令行参数(如-Dfast = true),您可以在启动虚拟机时切换应用程序模式。

答案 1 :(得分:1)

  1. 第二个更灵活,因为你可以决定在开始时打开或关闭某些东西。第一个示例将被优化掉,因此您需要重新编译才能更改该值。

  2. Systemproperty由-Dproperty = value设置(注意:在传递给main方法的命令行参数之前)