使用标记

时间:2015-05-07 17:11:55

标签: java android

我有一个申请表:

public class TestApplication extends Application {
    @Override
    public void attachBaseContext(Context context){
        if (SomeGlobalState.doStuff) {
            doStuff();
        }
    }
}

我想在attachBaseContext中对这个应用程序进行一些设置,这个应用程序可以根据我可以传递的标志进行更改,而这个标记并不总是被传递,所以我不想将它添加到清单的元数据。

Android框架中是否有一些我不知道在哪里可以将“类似Intent”的附加内容传递给应用程序,或者我将不得不做一些hackish让它知道我希望它的状态为改变?

2 个答案:

答案 0 :(得分:1)

  

Android框架中是否有一些我不知道可以将“类似Intent”的附加内容传递给应用程序的内容

不,但你不需要它。

  

或者我将不得不做一些hackish让它知道我希望它的状态改变?

如果状态是持久的 - 并且您的问题表明它是 - 只需对该状态使用SharedPreferencesApplication可以检索并使用它们。而且,如果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是否等于您所期望的任何内容。非常适合测试。