Application配置全局Context

第一步、写一个全局的单例模式的MyApplication继承自Application 覆盖onCreate ,在这个方法里面实例化Application

第二步、配置全局的Context

<applicationandroid:name="com.appstore.service.MyApplication"></application>

第三步、使用,使用的时候用的时候根据类的名称访问Context

Android程序的入口点

多初入Android开发的网页可能不知道Android程序的入口点是什么,不是main()吗,当然Android123也保证国内知道的不到1%,很多网友可能直接回复是onCreate,当然我相信回复onCreate的在字面上不算错,但是你们想的是Activity中的onCreate方法吧,这里Android开发网告诉下大家真正的入口点entrypoint是什么。

Android使用GoogleDalvikVM,相对于传统JavaVM而言有着很大的不同,在SunJava体系中入口点和标准c语言一样是main(),而每个Android程序都包含着一个Application实例,一个Application实例中有多个ActivityServiceContentProviderBroadcastReceiver。因为大部分的应用都包含Activity所以,说很多网友认为是ActivityonCreate,但是你没有发现你的工程中有多个Activity?你可能没有见过没有ActivityAndroid应用吧。

其实在android.app.Application这个包的onCreate才是真正的Android入口点,只不过大多数开发者无需重写该类,他的继承关系如下图:

java.lang.Object
?android.content.Context
?android.content.ContextWrapper
?android.app.Application

android.app.Application类包含了4个公开的方法

voidonConfigurationChanged(ConfigurationnewConfig)
voidonCreate()//这里才是真正的入口点。
voidonLowMemory()
voidonTerminate()

所以希望大家,记住真正的Android入口点是applicationmain,你可以看下androidmanifest.xml的包含关系就清楚了,并不是每个应用都必须有Activity的。

androidapplication关于全局变量

android编程中,application这样的名词似乎变得那样的不常见,而让大家更为熟悉的是activityintentproviderbroadcastservice。但其实android中的application也有着它自身的用处。

  打开manifest文件,会看到有一个application配置标签,这就是有关application的使用了。那究竟application有什么用处呢?来看看SDK中是如何描述的:

  Baseclassforthosewhoneedtomaintainglobalapplicationstate.YoucanprovideyourownimplementationbyspecifyingitsnameinyourAndroidManifest.xml's<application>tag,whichwillcausethatclasstobeinstantiatedforyouwhentheprocessforyourapplication/packageiscreated.

  就是说application是用来保存全局变量的,并且是在package创建的时候就跟着存在了。所以当我们需要创建全局变量的时候,不需要再像j2se那样需要创建public权限的static变量,而直接在application中去实现。只需要调用ContextgetApplicationContext或者ActivitygetApplication方法来获得一个application对象,再做出相应的处理。

  因小工程中涉及到的文件比较多,这里就贴代码撒。

  application文件:

  Java代码:

 publicclassTestApplicationextendsApplication{

  privateintcurIndex;

  publicintgetCurIndex(){

  returncurIndex;

  }

  publicvoidsetCurIndex(intcurIndex){

  this.curIndex=curIndex;

  }

  @Override

  publicvoidonCreate(){

  super.onCreate();

  }

  @Override

  publicvoidonTerminate(){

  super.onTerminate();

  }

  }

  application中有一个curIndexsettergetter方法。

  第一个acitivty中对application进行的操作:

  Java代码:  

  TestApplicationapplication=(TestApplication)this.getApplication();

  Log.i("data",""+application.getCurIndex());

  application.setCurIndex(5);

  第二个Activity

  Java代码:

  TestApplicationapplication=(TestApplication)this.getApplication();

  Log.i("data",""+application.getCurIndex());

  application.setCurIndex(6);

  第三个Activity

  Java代码

  finalTestApplicationapplication=(TestApplication)this.getApplication();

  Log.i("data",""+application.getCurIndex());

  在运行过程中,每一次都kill掉对应的Activity,再进入下一个Activity

更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. android中Creating a Searchable Activity
  3. Gradle sync failed: Connection refused
  4. android 主界面 底部菜单 DEMO
  5. android 如何用代码生成圆角Bitmap图片
  6. android的aidl进程间通讯(一)
  7. Android实战教程第四篇之简单实现短信发送器
  8. android获取USB设备的名称
  9. Android(安卓)Studio 小技巧合集

随机推荐

  1. 继续群发Android游戏源码(再发15款)
  2. Android(安卓)Native OpenGL应用前后台切
  3. Android camera系统开发之IPC (一)
  4. Android(安卓)SD卡 路径问题
  5. [置顶] Android捕获Back键事件
  6. Android中Styles、Themes、attrs介绍和他
  7. 安卓学习必备开发板-Rayeager PX2
  8. 解决eclipse中android添加重载函数时参数
  9. 一位一年android开发者的瓶颈
  10. Android 四大组件之Activity