很多人以为在Android中activity中的onCreate方法才是Android程序的入口,但并非如此。Android中Application类中的onCreate方法才是Android程序的真正入口,而非activity对象中onCreate方法。Android中activity可以有,也可以没有,也确实存在没有activity对象的Android程序,而Android中application类是在程序启动时才创建,并且只会创建一个,通常情况下,我们是不需要创建自己的application对象,程序会自动帮我们创建。正是程序自动帮我们创建Application对象,很多情况下,我们不需具体实现的原因,导致我们忽略了Application对象,误以为activity对象中的onCreate方法才是Android程序的入口。下面详细介绍一下Android中的Application类:Application类的继承关系如下:java.lang.Object    android.content.Context        android.content.ContextWrapper            android.app.ApplicationApplication类包含了4个公开的方法    void  onConfigurationChanged(Configuration newConfig)    void  onCreate()  //这里才是真正的入口点。    void  onLowMemory()    void  onTerminate()若想创建自己的application对象,只需继承Application类,并在AndroidMainfest.xml文件中的application标签中进行注册。 application对象的声明周期是Android程序中最长的,它的声明周期相当于整个程序的生命周期。也就是说它是全局的,是单例的,所以在不同的activity,service中获得的对象都是同一个,可以通过application对象来实现真正意义上的全局变量,进行数据传递,数据共享,数据缓存等操作,这种全局变量方法直到程序被destroy才会被销毁。一个实现真正意义上Android程序的全局变量设置与获取的应用如下:

1、实现Application类

public class CustomApplication extends Application {    private static final String VALUE = "Harvey";    private String value;    @Override    public void onCreate()    {        super.onCreate();        setValue(VALUE); // 初始化全局变量    }    public void setValue(String value)    {        this.value = value;    }    public String getValue()    {        return value;    }}

2、在AndroidMainfest.xml文件中配置

<application      android:name="CustomApplication"></application>

3、调用整个程序的全局变量

public class FirstActivity extends Activity {  private CustomApplication app;  @Override  public void onCreate(Bundle savedInstanceState)  {      super.onCreate(savedInstanceState);      setContentView(R.layout.main);      app = (CustomApplication) getApplication(); // 获得CustomApplication对象      Log.i("FirstActivity", "初始值=====" + app.getValue()); // 获取进程中的全局变量值,看是否是初始化值      app.setValue("Harvey Ren"); // 重新设置值      Log.i("FirstActivity", "修改后=====" + app.getValue()); // 再次获取进程中的全局变量值,看是否被修改      Intent intent = new Intent();      intent.setClass(this, SecondActivity.class);      public class SecondActivity extends Activity {  private CustomApplication app;  @Override  protected void onCreate(Bundle savedInstanceState)  {      super.onCreate(savedInstanceState);      setContentView(R.layout.main);      app = (CustomApplication) getApplication(); // 获取应用程序     Log.i("SecondActivity", "当前值=====" + app.getValue()); // 获取全局值  }}(intent);  }}

注:博客首发于 http://blog.csdn.net/Pwiling/article/details/47662537 ,禁止转载

更多相关文章

  1. 在Android程序中使用全局变量
  2. Android实现无标题栏全屏的方法
  3. 25、Android中通过Intent传递对象、集合问题
  4. 用git下载Android的某个应用程序
  5. Android应用程序启动过程源代码分析
  6. Android中EditText 设置 imeOptions 无效问题的解决方法
  7. Android有两种方法检测USB设备插入

随机推荐

  1. android的Dialog使用
  2. Android(安卓)camera系统开发之IPC (二)
  3. 百度地图SDK for Android【事件监听】
  4. Qualcomm Snapdragon Debugger for Visua
  5. Android(安卓)Switch控件(在android2.2 a
  6. Android源码——安卓聊天
  7. Add USB WIFI to your system
  8. android activity-alias 的作用
  9. EditText 键盘输入类型
  10. Android(安卓)异步 RxAndroid框架官方例