Application在Activity之前运行
接触android已经有一段时间了,一直以为android程序的入口是配置文件中指定的Activity,最近看一个开源项目,发现里面实现了android 的Application类,才知道,android程序的真正入口是Application类的onCreate方法。只不过大多数开发者无需重写该类,它的继承关系如下
图:java.lang.Object
↳ android.content.Context
↳ android.content.ContextWrapper
↳ android.app.Application
android.app.Application类包含了4个公开的方法
void onConfigurationChanged(Configuration newConfig)
void onCreate() //这里才是真正的入口点。
void onLowMemory()
void onTerminate()
下面是测试代码:
使用application需要两个步骤:1.复写Application类,2.在配置文件中配置
示例代码如下:
02 | import android.app.Application; |
03 | import android.content.res.Configuration; |
04 | public class MyApp extends Application { |
06 | public void onConfigurationChanged(Configuration newConfig) { |
07 | super .onConfigurationChanged(newConfig); |
10 | public void onCreate() { |
12 | System.out.println( "MyApp is called" ); |
15 | public void onLowMemory() { |
19 | public void onTerminate() { |
配置文件:
1 | < application android:icon = "@drawable/icon" android:label = "@string/app_name" android:name = "app.app.MyApp" > |
Activity类:
1 | public void onCreate(Bundle savedInstanceState) { |
3 | super .onCreate(savedInstanceState); |
4 | setContentView(R.layout.main); |
5 | System.out.println( "MainActivity is called" ); |
结果:MyApp is called MainActivity is called
注释1:在Android中,Application只是一个松散的表征概念,没有多少实质上的表征[和J2me的Midlet有明显区别]。Application类,代表应用程序上下文状态,是一个极度弱化的概念。 Application只是一个空间范畴的概念,Application就是Activity,Service之类的组件上下文描述。 Application并不是Android的核心概念,而Activity才是Android的核心概念
注释2:MyApplication类的作用是为了放一些全局的和一些上下文都要用到变量和方法。