Android使用Application总结

标签: android application | 发表时间:2014-03-17 22:38 | 作者:xiongpan0807
出处:http://www.iteye.com

     Application 和Activity、Service一样是一个Android的系统组件,在程序被启动的时候android系统会创建一个单例的实例,Application的如何使用,又有哪些实际的作用呢?

 

   一、使用方式:

          1. 首先写一个类继承于Application;

          2.在mainifest中的Application标签中的   android:name 属性中指定你自己的Application类;

          3.通常在Activity中使用getApplication()来获得Application对象。

 

  二、它的作用:

     1.Application 是程序的入口,普通的java程序的入口是main函数,但是我们在android程序中似乎并没有写mian()函数,那么程序是从哪里开始执行的呢,答案就是从Application的OnCreate()方法开始的,我们写一个实例证明这一点;

public class MyApplication extends Application {
	@Override
	public void onCreate() {
		Log.i("order", this.getClass().getName());
		super.onCreate();
	}
}

 

    示例中唯一的一个Activity MainActivity

 

public class MainActivity extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		Log.i("order", this.getClass().getName());
	}
}

执行结果:




  从图上可以很清楚的看到,android程序启动后先调用了Application的OnCreate() 的方法,后面再调用的了Activity的OnCreate()方法,知道了这个,我们就可以把application中要初始化的数据放在application中,需要是直接获得。

 

2.传递对象

   在android中我们在两个Activity之间通常使用的是Intent来进行传递值,Intent传递一些基本的数据类型时候还比较方便,但是在传递对象的时候则需要这个对象类A实现了Serializable或者Parcellable接口,如果类A的成员变量中还包含有类B,那么类B也必须实现Serializable或者Parceallable接口,这样传递对象引用就先的非常的复制,但有了Application我们就不会那么麻烦了,还是刚刚的MyApplication类,对它进行一下扩充

public class MyApplication extends Application {
	
	public  HashMap<String , Object> Data=new HashMap<String, Object>();
	
	@Override
	public void onCreate() {
		Log.i("order", this.getClass().getName());
		super.onCreate();
	}
}

   我们对上面的类添加了一个HashMap为application成员变量,这样在传递对象引用的时候, 我们就可以把引用放到这个HashMap中,然后把它key通过Intent传递过去,再在通过getApplication()获得到Application,这样就可以通过application完成对象的传递,需要强调下的时可以这样做一个很重要的原因是Appliation它本身就是一个单例的,为了防止内存泄漏,我们在另一个Activity中接受到引用后,我们应该把这个引用从HashMap中remove掉。

 

3、缓存数据,已微信朋友圈为例,当进入朋友圈刷新后,可以把从网络上获得的数据放到Application中缓存起来,如果用户进入到其他页面然后有再回来到朋友圈,在用户没有刷新的情况下 ,我们就可以直接读取Appliation中的数据,减少网络访问,如果有一些特别大的数据内容(比如大图片),最好使用软引用的方式进行缓存防止内存溢出。

    

   Application 运用时一定要注意防止内存泄漏。出现“out Of Memery Error”

 

  

 

 

 



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [android application] 推荐:

Android使用Application总结

- - 移动开发 - ITeye博客
     Application 和Activity、Service一样是一个Android的系统组件,在程序被启动的时候android系统会创建一个单例的实例,Application的如何使用,又有哪些实际的作用呢?. 首先写一个类继承于Application;.           2.在mainifest中的Application标签中的   android:name 属性中指定你自己的Application类;.

Android Application对象必须掌握的七点

- - CSDN博客移动开发推荐文章
   1:Application是什么.   Application和Activity,Service一样,是android框架的一个系统组件,当android程序启动时系统会创建一个 application对象,用来存储系统的一些信息. 通常我们是不需要指定一个Application的,这时系统会自动帮我们创建,如果需要创建自己 的Application,也很简单创建一个类继承 Application并在manifest的application标签中进行注册(只需要给Application标签增加个name属性把自己的 Application的名字定入即可).

Google正式宣布Android应用统计工具:应用统计(Application Statistics)

- 小白 - 36氪
前天 @36氪 首先报道Google为Android开发者推出了类似Google分析的统计工具,今天Google在Android开发者博客上正式宣布了这一工具. 新推出的“应用统计(Application Statistics)”是Android应用市场开发者控制台中的一个新面板,可以让开发者纵览应用的安装情况,提供了图表和表格,对每款应用的安装历史进行了详细统计,并且包括了Android平台版本,设备种类,用户国家,用户语言等关键指数.

如何安全的退出一个已开启多个Activity的Android Application

- - 移动开发 - ITeye博客
在Android系统中,默认情况下,每开启一个Activity,都在会当前的任务栈中压入一个新的Activity,当我们在一个Application中开发了多个Activity的时候,如果想要退出应用,那么我们需要按多此返回键才能退出...这样就造成用户体验很不好的情况. 那么,怎样做才能让用户在想退出Application的时候,只按一个返回键就能退出呢.

GitHub - allwefantasy/streamingpro: Build Spark Batch/Streaming/MLlib Application by SQL

- -
StreamingPro 中文文档. 应用模式:写json配置文件,StreamingPro启动后执行该文件,可以作为批处理或者流式程序. 服务模式:启动一个StreamingPro Server作为常驻程序,然后通过http接口发送MLSQL脚本进行交互. 我们强烈推荐使用第二种模式,第一种模式现在已经不太更新了,现在迅速迭代的是第二种模式,并且第二种模式可以构建AI平台.

Profiling a .NET Core Application on Linux | All Your Base Are Belong To Us

- -
In the same vein of  my previous post on analyzing core dumps of .NET Core applications on Linux, let’s take a look at what it takes to do some basic performance profiling.

压力测试工具集合【ab,webbench,Siege,http_load,Web Application Stress】

- - 小彰
-------------------------------------------------- 1 Apache附带的工具ab. ab的全称是ApacheBench,是Apache附带的一个小工具,专门用于HTTP Server的benchmark testing,可以同时模拟多个并发请求.

WebSphere Application Server ND V7.0.0.27 混合集群配置备注

- - CSDN博客架构设计推荐文章
注意:64bit的WAS安装Windows,AIX均不带PMT工具,也就是下图的概要管理工具,但是在V7以后加装使用Feature Pack For SCA特性补丁包可以使用. 如下图,此集群就是 WAS ND 7.0 With FP For SCA 1.0的集群,和普通WAS集群在应用部署和SOA应用架构设计上略有不同.

有什么知名的开源apm(Application Performance Management)工具吗? - 知乎

- -
链接:https://www.zhihu.com/question/27994350/answer/118821214. 商业转载请联系作者获得授权,非商业转载请注明出处. 现代APM体系,基本都是参考Google的Dapper(大规模分布式系统的跟踪系统)的体系来做的. 通过跟踪请求的处理过程,来对应用系统在前后端处理、服务端调用的性能消耗进行跟踪,关于Dapper的介绍可以看这个链接:.

Android 遥控车

- CasparZ - LinuxTOY
您确定您真的会用 Android 手机玩赛车. 16 岁的法国学生 Jonathan Rico 使用 Android 手机通过蓝牙实现了对改装玩具汽车的遥控. 操控的方式和那些标榜的智能手机游戏一样,使用重力感应,差别是这次控制的是现实世界中的遥控汽车. 收藏到 del.icio.us |.