很多人以为在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. 浅谈Java中Collections.sort对List排序的两种方法
  2. 类和 Json对象
  3. Python list sort方法的具体使用
  4. python list.sort()根据多个关键字排序的方法实现
  5. android窗口管理机
  6. (转载)Instrumentation 框架简介
  7. Android(安卓)绘制2D图形
  8. ActivityThread 源码笔记(1)
  9. Android程序入口ActivityThread和Android应用程序启动流程详解

随机推荐

  1. 通过html页面打开Android本地的app
  2. 待验证内容。
  3. Android AIDL进程通信机制详解
  4. Android TextView内容居中和控件居中
  5. android设置button透明度
  6. 关于android 悬浮窗和自启动的设置, 以及
  7. Android模糊处理实现图片毛玻璃效果
  8. android获取内置和外置SD卡路径
  9. Android 自动化测试—robotium(五)Spinner
  10. Android Linux Socket 数据传输错误