Andorid中Application类的使用

本文详细解析Android应用的真正入口Application类及其在应用程序中的关键作用,包括其内部结构、方法调用顺序、如何自定义Application类以及Application类在实际开发中的应用场景。通过实例展示如何利用Application类实现数据持久化,提升用户体验。
摘要由CSDN通过智能技术生成

application类的使用

    1.Application类
    Application和activity、service等四大组件一样Android的组件。最开始学习Java
的
是,我们都是通过main方法进入程序的,但是Android的真正入口在哪里?
    初学者可能认为Android的入口不就是activity中onCreate的方法吗,我最开始也是
这么认为的,那个时候我还不知道有application这个类,只知道在manfestandroid.xml
文件中定义一个application标签,在里面在写Android的四大组件,组件中还可以添加
action,category等属性值。但是不理解application到底有什么用,现在工作半年了,
对Android的一些知识点理解也不同,那么application到底有什么用了?
    其实application才是Android的真正入口,在application中有一个方法oncreate,
这个方法在启动APP的时候就会被调用。我们如何写一个自己的application了?首先写
一个类MyApplication继承Application,然后重写onCreate等,最后在
manfestandroid.xml的Application标签中添加属性
andorid:name="com.simple.fan.MyApplication",这个属性的值是自定义Application
的详细路径,写到这里我们自定义的MyApplication的就写完了,并且这个类还是全局单
例的类。
<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity 
            android:name="com.simple.fan.MainActivity">
            <intent-filter >
                <action android:name="android.intent.action.VIEW"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>

        2.application类的关系

java.lang.Object

    android.content.Content

        android.content.ContentWrapper

            android.app.Application

    android.app.Application中的四个方法

        onConfigurationChanged(Configuration newConfig)
    onCreate() :android的真正入口
    onLowMemory()
    onTerminate()
:APP真正退出时条用的方法

   3.application的用法

      在application中定义的变量是全局的,应用程序不退出,这边变量就会清除,一直存在堆栈中,在application中存放的数据一般都是全局的变量,这样可以起到共享数据的作用,前不久做了一个项目,在一个activity中会通过网络操作,获取到数据,保存在内存中,当退出这个activity时,内存中的数据就会被GC回收掉,当再次进入activity时,又需要网络操作,网络操作会耗时,这时界面会没有什么数据,很影响用户的体验,但是,当我们上次进入这个activity时,就把数据缓存到application中,下次在进入时,先从application中取数据,显示出来,之后,我们在开个线程在后台偷偷的去下载最新数据,下载完成后再把全新的数据刷到UI界面上去。

Appliccation类

<span style="font-size:14px;">public class GlobalApplication extends Application {
	
	public Map<String, Object> mMap = new HashMap<String, Object>();
	
	@Override
	public void onCreate() {
		super.onCreate();
		mMap.put("fan", "my name is fan");
		Log.i("fan", "onCreate");
	}

	@Override
	public void onTerminate() {
		super.onTerminate();
		Log.i("fan", "onTerminate");
	}
	
}</span>
Activity类

<span style="font-size:18px;">public class MainActivity extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main_activity);
		Log.i("fan", ((GlobalApplication)getApplication()).mMap.get("fan").toString());
	}
}</span>

在activity中获取application的方法为getApplication()或者通过Content.getApplicationContent方法获取Application,另外通过Application也可以获取到一些关于APP的一些信息,例如一些包名和APP的信息。

    好了,Application就讲到这里。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值