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

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