Activity,Android中的四大组件之一,任何一个应用必须包含一个或以上的Activity,它是所有功能的载体,是用户看得见摸得着的,权重毋庸置疑,也是面试中常见的基础面试之一,对于它的生命周期的轨迹,相信大家并不陌生,比如,创建一个Activity,销毁一个Activity,跳转到新的Activity,点击Home建或电源键等等,常见的我们都知道,那么,在当前Activity,下拉通知栏呢?会走哪些生命周期呢?
我们可以猜测一下,会走哪个生命周期?onPause?onStop?还是其它的,不妨我们组个测试?把几个常见的生命周期方法写出来,打印一下,如下:
publicclassMainActivityextendsAppCompatActivity { privatestaticfinalStringTAG=MainActivity.class.getName(); protectedvoidonCreate(BundlesavedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.i(TAG, "onCreate"); } protectedvoidonStart() { super.onStart(); Log.i(TAG, "onStart"); } protectedvoidonStop() { super.onStop(); Log.i(TAG, "onStop"); } protectedvoidonResume() { super.onResume(); Log.i(TAG, "onResume"); } protectedvoidonPause() { super.onPause(); Log.i(TAG, "onPause"); } protectedvoidonDestroy() { super.onDestroy(); Log.i(TAG, "onDestroy"); } }
当运行后,下拉通知栏,可以发现,以上写的生命周期方法一个也没走,那么我们就可以做一个总结:当前Activity中,下拉通知栏,是不走任何生命周期的。
那么问题来了,问题有二:
1、为什么不走生命周期呢?
2、既然不走生命周期方法,开发中怎么监听到用户下拉通知栏呢?
针对第一个问题,我们来具体的来想一想,能引起Activity的生命周期的变化,需要什么条件?创建一个Activity,销毁一个Activity,隐藏一个Activity,跳转一个Activity等都可以,是不是发现,必须得有一个Activity参与,才能引起生命周期的变化,系统的通知栏是一个Activity吗?显然不是,它是一个用于通知的窗口,所以,既然不是Activity,当然也就不走任何生命周期了。
第二个问题,我们可以通过重写onWindowFocusChanged这个方法来监听通知栏的下拉,false为下拉。