下拉狀態(tài)欄&多窗口的生命周期

下拉狀態(tài)欄生命周期

下拉通知欄對(duì)Activity的生命周期沒有影響。

onPause()是否調(diào)用的關(guān)鍵就是,是否有另一個(gè)Activity參與進(jìn)來(lái)了。
而網(wǎng)上流傳甚廣的onPause()和onStop()調(diào)用中提到的“遮擋”,應(yīng)該修正為“被Activity遮擋”

PS: 根據(jù)AlertDialog和Toast的源碼,可以發(fā)現(xiàn)它們顯示的原理,都是通過WindowManager.addView()來(lái)顯示的。也就是說,AlertDialog和Toast可以看做是當(dāng)前Activity的一部分View,當(dāng)然也不會(huì)對(duì)Activity的生命周期構(gòu)成影響。


多窗口生命周期

我們都知道,使用多窗口的時(shí)候應(yīng)用界面就會(huì)縮小很多,我們需要考錄不同屏幕尺寸的適配模式,所以盡量不要出現(xiàn)屏幕尺寸變化過大界面無(wú)法正常顯示的情況~

那么,
既然多窗口這么煩啊哈哈,
我們?nèi)绾谓媚兀?/p>

禁用多窗口

resizeableActivitytargetSdkVersion為24以上才起作用,否則該屬性無(wú)效。

// Application中
// false表示禁用,默認(rèn)為true
android:resizeableActivity="false"

當(dāng)targetSdkVersion低于24時(shí),活動(dòng)不允許橫豎屏切換,應(yīng)用也將不支持多窗口模式。

// 在activity中,portrait表示只支持豎屏,landscape只支持橫屏
android:screenOrientation="portrait"

多窗口下的生命周期

// FirstApp
public class MainActivity extends AppCompatActivity {

    private static final String TAG = "FIRST_APP";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.d(TAG, "onCreate");
    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.d(TAG, "onStart");
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.d(TAG, "onResume");
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.d(TAG, "onPause");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.d(TAG, "onStop");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.d(TAG, "onDestroy");
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        Log.d(TAG, "onRestart");
    }
}
// SecondApp同上

啟動(dòng)FirstApp

FirstApp:onCreate() -> onStart() -> onResume()

當(dāng)FirstApp處于onResume()狀態(tài)時(shí),進(jìn)入多窗口模式,MainActivity經(jīng)歷了重新創(chuàng)建的過程。

FirstApp:onPause() -> onStop() -> onDestory() -> onCreate() -> onStart() -> onResume() ->onPause()

啟動(dòng)SecondApp

SecondApp:onCreate() -> onStart() -> onResume()

操作FirstApp

SecondApp:onPause()

FirstApp:onResume()

PS

  • 最好不要在活動(dòng)的onPause()方法中處理視頻播放器的暫停,應(yīng)該在onStop()總進(jìn)行處理,在onStart()中回復(fù)視頻播放。
  • AndroidManifest.xml這對(duì)活動(dòng)進(jìn)行配置,活動(dòng)不會(huì)被重建。將屏幕變化通知到Activity中的onConfigurationChanged()方法中。
// activity中
android:configChanges="orientation|keyboardHidden|screenSize|screenLayout"

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 啟動(dòng)與銷毀Activity 不同于使用 main() 方法啟動(dòng)應(yīng)用的其他編程范例,Android 系統(tǒng)會(huì)通過調(diào)用對(duì)...
    安卓Boy閱讀 1,887評(píng)論 3 5
  • 轉(zhuǎn)自Android四大基本組件介紹與生命周期Android四大基本組件分別是Activity,Service服務(wù),...
    開子的私家地閱讀 1,588評(píng)論 0 5
  • 普通的Activity跳轉(zhuǎn)生命周期變化 MainActivity 啟動(dòng) D/LUtil: MainActivit...
    AFatty閱讀 514評(píng)論 0 0
  • 小白:大神,咱們開始吧,我今天把數(shù)據(jù)類型和變量這章學(xué)完了呢。 大神:你先談?wù)勀銓?duì)浮點(diǎn)數(shù)的理解吧。 小白: 浮點(diǎn)數(shù)就...
    問天eric閱讀 1,424評(píng)論 0 0
  • 看過《雷雨》,看過《日出》,看過《原野》,看過《北京人》。曹禺先生四部著名的話劇我都看了。正如人所評(píng)價(jià)的那樣,我相...
    安安小快樂閱讀 660評(píng)論 0 2

友情鏈接更多精彩內(nèi)容