Android中下拉通知栏,Activity会走哪些生命周期?
16lz
2021-01-25
Activity,Android中的四大组件之一,任何一个应用必须包含一个或以上的Activity,它是所有功能的载体,是用户看得见摸得着的,权重毋庸置疑,也是面试中常见的基础面试之一,对于它的生命周期的轨迹,相信大家并不陌生,比如,创建一个Activity,销毁一个Activity,跳转到新的Activity,点击Home建或电源键等等,常见的我们都知道,那么,在当前Activity,下拉通知栏呢?会走哪些生命周期呢?
我们可以猜测一下,会走哪个生命周期?onPause?onStop?还是其它的,不妨我们组个测试?把几个常见的生命周期方法写出来,打印一下,如下:
public class MainActivity extends AppCompatActivity { private static final String TAG = MainActivity.class.getName(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.i(TAG, "onCreate"); } @Override protected void onStart() { super.onStart(); Log.i(TAG, "onStart"); } @Override protected void onStop() { super.onStop(); Log.i(TAG, "onStop"); } @Override protected void onResume() { super.onResume(); Log.i(TAG, "onResume"); } @Override protected void onPause() { super.onPause(); Log.i(TAG, "onPause"); } @Override protected void onDestroy() { super.onDestroy(); Log.i(TAG, "onDestroy"); }}
当运行后,下拉通知栏,可以发现,以上写的生命周期方法一个也没走,那么我们就可以做一个总结:当前Activity中,下拉通知栏,是不走任何生命周期的。
那么问题来了,问题有二:
1、为什么不走生命周期呢?
2、既然不走生命周期方法,开发中怎么监听到用户下拉通知栏呢?
针对第一个问题,我们来具体的来想一想,能引起Activity的生命周期的变化,需要什么条件?创建一个Activity,销毁一个Activity,隐藏一个Activity,跳转一个Activity等都可以,是不是发现,必须得有一个Activity参与,才能引起生命周期的变化,系统的通知栏是一个Activity吗?显然不是,它是一个用于通知的窗口,所以,既然不是Activity,当然也就不走任何生命周期了。
第二个问题,我们可以通过重写onWindowFocusChanged这个方法来监听通知栏的下拉,false为下拉。
更多相关文章
- Android(安卓)Service详解(一) 初识Service
- android emulator: ERROR: unknown virtual device name:解决方
- Android子线程中更新UI的3种方法
- WebView Apps
- Android:LiveData postValue导致数据丢失问题,及其原因
- [sg] Android(安卓)6.0 添加对Home键的拦截
- [android]获取各应用的启动次数和运行时间
- 【Android】安卓AVD无法上网解决方案
- android事件拦截处理机制图解