安卓开发的常见问题之全局变量Application Context

创建一个属于你自己的android.app.Application的子类,然后在manifest中申明一下这个类,这是android就为此建立一个全局可用的实例,你可以在其他任何地方使用Context.getApplicationContext()方法获取这个实例,进而获取其中的状态(变量)。

下面看一下Demo:

class MyApp extends Application {

private String myState;

public String getState(){

return myState;

}

public void setState(String s){

myState = s;

}

}

class Blah extends Activity {

@Override

public void onCreate(Bundle b){

...

MyApp appState = ((MyApp)getApplicationContext());

String state = appState.getState();

...

}

}

这个效果就是使用静态变量是一样的,但是其更符合android的架构体系。 使用这种方法的话需要在AndroidManifest.xml中配置一下:

<application android:name=".MyApp"

android:icon="@drawable/icon"

android:label="@string/app_name">
相关推荐:
使用SecureRandom时不要使用SecureRandom (byte[] seed)这个构造函数,会造成生成的随机数不随机。 建议通过/dev/urandom或者/dev/random获取的熵值来初始化伪随机数生成器PRNG。
webview组件的接口函数searchBoxJavaBridge_存在远程代码执行漏洞,远程攻击者利用此漏洞能实现本地java和js的交互,可以对Android移动终端进行网页挂马从而控制受影响设备。 调用removeJavascriptInterfac …
键盘区域外才是屏幕的边缘,定义布局文件时使用:android:gravity="bottom"的话就会被挤到上部。 解决办法: 在此工程的androidMainfest.xml文件中对应的Activity中写入 android:windowSoftInputMode="adju …
当系统辅助功能中的任意一项服务被开启后,所有由系统提供的WebView都会被加入两个JS objects,分别为是”accessibility” 和 “accessibilityTraversal”,如果应用使用了系统的WebView,并且设置了setJavaScr …
Android 编译时出现“finished with non-zero exit value”,这是怎么了?一直找不到原因所在,搞得整个项目都跨了。 尝试恢复解决: 1.想想你刚刚动了啥导致的?如果可以,请备份后回退到之前的状态,试着看 …
拿起手机扫一扫即可带走我!