我有一个申请表:
public class TestApplication extends Application {
@Override
public void attachBaseContext(Context context){
if (SomeGlobalState.doStuff) {
doStuff();
}
}
}
我想在attachBaseContext
中对这个应用程序进行一些设置,这个应用程序可以根据我可以传递的标志进行更改,而这个标记并不总是被传递,所以我不想将它添加到清单的元数据。
Android框架中是否有一些我不知道在哪里可以将“类似Intent”的附加内容传递给应用程序,或者我将不得不做一些hackish让它知道我希望它的状态为改变?
答案 0 :(得分:1)
Android框架中是否有一些我不知道可以将“类似Intent”的附加内容传递给应用程序的内容
不,但你不需要它。
或者我将不得不做一些hackish让它知道我希望它的状态改变?
如果状态是持久的 - 并且您的问题表明它是 - 只需对该状态使用SharedPreferences
。 Application
可以检索并使用它们。而且,如果Application
需要主动执行状态更改,Application
可以为SharedPreferences
更改注册一个监听器。
如果状态不是持久的 - 意味着应用程序始终在状态A中启动并且可能会根据运行时工作切换到状态BZ - 只需在状态更改时调用Application
上的方法。 Application
可以保留数据成员中的状态。
答案 1 :(得分:0)
要在没有文件的情况下执行此操作,您可以使用adb shell setprop <propname> <value>
然后在您的attachBaseContext中执行此类操作
Process proc = Runtime.getRuntime().exec(new String[]{"/system/bin/getprop", MY_PROPERTY});
BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String propertyValue = reader.readLine();
然后您可以验证propertyValue
是否等于您所期望的任何内容。非常适合测试。