Android中下拉通知栏,Activity会走哪些生命周期?

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为下拉。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章