Android中Application设置全局变量以及传值_安卓Application (全局变量)使用方法
2014-09-28 11:28:41  By: dwtedx

Application设置全局变量以及传值、重写Application、主要重写里面的onCreate方法

就是创建的时候、我们让它初始化一些值、前段时间在javaeye里面看到过一个例子、与此相似

我做了些改进、听说外国开发者习惯用此初始化一些全局变量、好像在Activity

一些类里面初始化全局变量的化、会遇到一些空指针的异常、当然、我没有遇到过

如果用此方法初始化的话、那么就可以避免那些有可能出现的错误

启动Application、他就会创建一个PID、就是进程ID、所有的Activity就会在此进程上运行

那么我们在Application创建的时候初始化全局变量、那么是不是所有的Activity都可以拿到这些

全局变量、再进一步说、我们在某一个Activity中改变了这些全局变量的值、那么在别的Activity中

是不是值就改变了呢、这个算不算传值呢?

OK、那么下面的例子我们测试下

public class MyApplication extends Application {
        private String name;
        
        @Override
        public void onCreate() {
                super.onCreate();
                setName(NAME); //初始化全局变量
        }
        public String getName() {
                return name;
        }
        public void setName(String name) {
                this.name = name;
        }
        
        private static final String NAME = "MyApplication";
}


应用程序创建好了、不过我们应该在配置文件ApplicationManifest.xml中将要运行的应用程序MyApplication加进去

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.dwtedx.app"
    android:versionCode="1"
    android:versionName="1.0" >
    <uses-sdk android:minSdkVersion="8" />
    <application
        android:name=".MyApplication"
        android:icon="@drawable/icon"
        android:label="@string/app_name" >
        <!-- 将默认Application、设置成我们自己的MyApplication -->
        <activity
            android:name=".MyFirstActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>


当xml配置文件运行完android:name=".MyApplication">、在此那么就分配好了进程ID、再下面

我们就要运行我们的Activity

public class MyFirstActivity extends Activity {
    
    private MyApplication app;
        
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
		//获得我们的MyApplication
        app = (MyApplication) getApplication();
		//将我们放到进程中的全局变量拿出来、看是不是我们曾经设置的值
        Log.e("MyFirstActivityOriginal", app.getName());
		//OK,现在我们开始修改了
        app.setName("is dwtedx");
		//再看下,这个值改变了没有
        Log.e("MyFirstActivityChanged", app.getName());
    }
}


那么程序最后输出的值是MyFirstActivityOriginal MyApplication、MyFirstActivityChanged is dwtedx

若资源对你有帮助、浏览后有很大收获、不妨小额打赏我一下、你的鼓励是维持我不断写博客最大动力

想获取DD博客最新代码、你可以扫描下方的二维码、关注DD博客微信公众号(ddblogs)

或者你也可以关注我的新浪微博、了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)

如对资源有任何疑问或觉得仍然有很大的改善空间、可以对该博文进行评论、希望不吝赐教

为保证及时回复、可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)

感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛


快速评论


技术评论

  • 该技术还没有评论、赶快抢沙发吧...
DD记账
top
+