我已经在我的应用程序中自定义了Application
类来初始化一些全局对象。
但我注意到这个Application
类不仅在普通的app start中运行,而且在其他场合(比如单元测试)中也运行。这是不可取的,因为Application
类中的初始化可能会对测试结果产生副作用。
那么,在Application
类中是否有任何方法可以查明应用程序是为用户的正常使用而运行,还是为其他目的运行?
我想实现这样的目标:
public class MyApplication extends Application
{
@Override
public void onCreate()
{
super.onCreate();
if (isNormalRun()) //<-- How to implement this?
initGlobalObjects();
}
private void initGlobalObjects()
{
SomeClass.initializeInstance(this);
OtherClass.initializeInstance(this);
//...
}
}
最佳答案
你应该试试谷歌最近发布的“构建变体”。
你可以这样定义一种新的产品口味(谷歌的例子):
...
android {
...
defaultConfig { ... }
signingConfigs { ... }
buildTypes { ... }
productFlavors {
demo {
applicationId "com.buildsystemexample.app.demo"
versionName "1.0-demo"
}
full {
applicationId "com.buildsystemexample.app.full"
versionName "1.0-full"
}
}
}
...
然后将源目录添加到项目中。每个产品风味对应于
/src/
下面的源目录。你可以给每种口味添加资源、类、值等。为了解决您的特定问题,您应该在每个flavours源目录中放置一个Application
类,并将它们彼此分开开发。Documentation on developer.android.com