Android定义全局可访问变量

581 阅读1分钟

我正在参与掘金新人创作活动,一起开启写作之路

为啥需要全局变量?

在有些时刻需要访问服务器端的接口,如果每次都在活动里定义URL字符串来存储ip地址,那当换了一个局域网的网段时,所有的Activity的ip地址都得洗一遍,这是比较麻烦的。

如何解决这种情况?

创建一个Myapplication类

//声明一个变量
public String URL;

@Override
public void onCreate() {
    // TODO Auto-generated method stub
    super.onCreate();
    setURL("http://*.*.*.*:8000");
}

public String getURL() {
    return URL;
}

public void setURL(String URL) {
    this.URL = URL;
}

在注册清单manifest.xml,application的name属性中拿到它

<application
        android:name=".Myapplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:networkSecurityConfig="@xml/network_security_config"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"

最后使用的时候:

	private String URL;
	private Myapplication myapplication;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        getSupportActionBar().hide();
        //获得对象
        myapplication = (Myapplication) getApplication();
        URL=myapplication.getURL();
        initView();
    }

### 等需要修改网段的时候,就将Myapplication 里面set的值改变,也有覆盖的操作,