使用application传递全局变量
2016-07-07 14:00
477 查看
1、有关application的说明
(1)Application和Activity,Service一样是Android框架的系统组件,当Android程序启动时系统创建一个Application对象,用来存储系统的一些信息。Android系统自动回位每个程序运行时创建一个Application类的对象且只创建一个,所以Application可以说是单例模式的一个类。
(2)通常我们不需要指定一个application的,系统会自动帮我们创建,如果我们需要自己创建一个Application,只需要创建一个类继承Application并且在AndroidMainfest.xml文件中的application标签中进行注册(在application标签添加name属性,并且添加自己Application的名字就可以)
(3)启动Application时,系统会创建一个PID,即进程ID,所有的Activity都会在此进程上运行。那么我们在Application创建的时候初始化全局变量,同一个应用的所有Activity都可以取到这些全局变量的值,换句话说,我们在某一个Activity中改变了这些全局变量的值,那么在同一个应用的其他Activity中值就会改变。
(4)Application对象的生命周期是整个程序中最长的,它的生命周期就等于这个程序的生命周期。因为它是全局的单例的,所以在不同的Activity,Service中获得的对象都是同一个对象。所以可以通过Application来进行一些,如:数据传递、数据共享和数据缓存等操作。
2、应用实例
MainActivity
SecondActivity
MyApp
AndroidMainfest.xml
(1)Application和Activity,Service一样是Android框架的系统组件,当Android程序启动时系统创建一个Application对象,用来存储系统的一些信息。Android系统自动回位每个程序运行时创建一个Application类的对象且只创建一个,所以Application可以说是单例模式的一个类。
(2)通常我们不需要指定一个application的,系统会自动帮我们创建,如果我们需要自己创建一个Application,只需要创建一个类继承Application并且在AndroidMainfest.xml文件中的application标签中进行注册(在application标签添加name属性,并且添加自己Application的名字就可以)
(3)启动Application时,系统会创建一个PID,即进程ID,所有的Activity都会在此进程上运行。那么我们在Application创建的时候初始化全局变量,同一个应用的所有Activity都可以取到这些全局变量的值,换句话说,我们在某一个Activity中改变了这些全局变量的值,那么在同一个应用的其他Activity中值就会改变。
(4)Application对象的生命周期是整个程序中最长的,它的生命周期就等于这个程序的生命周期。因为它是全局的单例的,所以在不同的Activity,Service中获得的对象都是同一个对象。所以可以通过Application来进行一些,如:数据传递、数据共享和数据缓存等操作。
2、应用实例
MainActivity
package com.example.test; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; public class MainActivity extends Activity { private MyApp myApp; private String log; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myApp=(MyApp) getApplication(); Log.i(log,"修改前的value"+myApp.getValue()); myApp.setValue("hello"); Log.i(log,"修改后的value"+myApp.getValue()); Intent intent=new Intent(this,SecondActivity.class); startActivity(intent); } }
SecondActivity
package com.example.test; import android.app.Activity; import android.os.Bundle; import android.util.Log; public class SecondActivity extends Activity { private MyApp myApp; private String log; @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); myApp=(MyApp)getApplication(); Log.i(log,"调用secondActivity查看"+myApp.getValue()); } }
MyApp
package com.example.test; import android.app.Application; public class MyApp extends Application{ private String str="VALUE"; private String value; @Override public void onCreate(){ super.onCreate(); setValue(str); } public void setValue(String value) { // TODO Auto-generated method stub this.value=value; } public String getValue(){ return value; } }
AndroidMainfest.xml
<!--添加了name属性--> <application android:name="MyApp" android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.test.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".SecondActivity"></activity> </application>
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories