Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Activity對象的onCreate方法真是Android程序的入口嗎?

Activity對象的onCreate方法真是Android程序的入口嗎?

編輯:關於Android編程

很多人以為在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.Application


Application類包含了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文件中配置


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);
  }
}

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved