activity透明主題引起生命週期的變化
以前開發時,一直沒有留意activity如果主題背景透明,對生命週期有什麼影響呢?
測試方式:編寫demo
配置檔案(AndroidManifest)中
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.lcl.view">
<application
android:allowBackup="true"
android:icon ="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".Sec"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
</application>
</manifest>
MainActivity中
package com.lcl.view;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i("MM", "onCreate");
// Activity正在被建立;可以做初始化操作 。比如呼叫setContentView載入介面佈局資源,
// 初始化Activity所需資料
}
@Override
protected void onRestart() {
super.onRestart();
Log.i("MM", "onRestart");
//Activity重新啟動,Activity從不可見到可見,onRestart會被呼叫
}
@Override
protected void onStart() {
super.onStart();
Log.i("MM", "onStart");
//Activity正在被啟動;此時,Activity可見,但是還沒有出現在前臺,無法和使用者互動,可理解為使用者不可見
}
@Override
protected void onResume() {
super.onResume();
Log.i("MM", "onResume");
//Activity已經可見,並且出現在前臺並開始活動;與onStart()方法都表示Activity已經可見,
// 區別是onStart()是後臺可見,onResume()是前臺可見
}
@Override
protected void onPause() {
super.onPause();
Log.i("MM", "onPause");
//表示Activity正在停止,正常情況下,緊接著onStop會被執行
}
@Override
protected void onStop() {
super.onStop();
Log.i("MM", "onStop");
//Activity即將停止,可以做一些回收但不太耗時操作
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.i("MM", "onDestroy");
//表示Activity即將被銷燬,此時可以做一些回收和資源釋放操作
}
public void onClick(View view){
Intent i = new Intent(MainActivity.this,Sec.class);
startActivity(i);
}
}
Sec中
package com.lcl.view;
import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
/**
* Created by liuchunliang on 2017/2/21.
*/
public class Sec extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sec);
Log.i("MM", "Sec onCreate");
}
@Override
protected void onRestart() {
super.onRestart();
Log.i("MM", "Sec onRestart");
//Activity重新啟動,Activity從不可見到可見,onRestart會被呼叫
}
@Override
protected void onStart() {
super.onStart();
Log.i("MM", "Sec onStart");
//Activity正在被啟動;此時,Activity可見,但是還沒有出現在前臺,無法和使用者互動,可理解為使用者不可見
}
@Override
protected void onResume() {
super.onResume();
Log.i("MM", "Sec onResume");
//Activity已經可見,並且出現在前臺並開始活動;與onStart()方法都表示Activity已經可見,
// 區別是onStart()是後臺可見,onResume()是前臺可見
}
@Override
protected void onPause() {
super.onPause();
Log.i("MM", "Sec onPause");
//表示Activity正在停止,正常情況下,緊接著onStop會被執行
}
@Override
protected void onStop() {
super.onStop();
Log.i("MM", "Sec onStop");
//Activity即將停止,可以做一些回收但不太耗時操作
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.i("MM", "Sec onDestroy");
//表示Activity即將被銷燬,此時可以做一些回收和資源釋放操作
}
}
開始執行程式 執行週期:
點選跳轉 執行週期:
按下返回鍵 執行週期:
我們來分析一下:
首先是MainActivity從建立->啟動->到使用者可見,
然後點選跳轉時MainActivity先暫停然後停止,但是呢因為是透明主題,所以使用者可見,沒有執行onStop()方法,Sec 中onCreate()建立,然後啟動,最後呈現給使用者,
當我們按下返回鍵時,Sec 先執行onPause()還是因為採用透明主題,所以沒有執行onStop(),MainActivity中,沒有執行onRestart() onStart()而是執行了onResume,因為MainActivity已經建立,只是由使用者不可見到使用者可見,所以只執行了onResume(),然後Sec 繼續執行onStop()和onDestroy().
實踐出真知,大家也多動手實驗一下吧。
相關推薦
activity透明主題引起生命週期的變化
以前開發時,一直沒有留意activity如果主題背景透明,對生命週期有什麼影響呢? 測試方式:編寫demo 配置檔案(AndroidManifest)中 <?xml version="1.0" encoding="utf-8"?> <
複習 activity 的生命週期 手機鎖屏時生命週期變化
onCreat() 不可見不可互動 建立時呼叫 onStart()是activity介面被顯示出來的時候執行的,使用者可見,包括有一個activity在他上面,但沒有將它完全覆蓋,使用者可以看到部分activity但不能與它互動 建立時或者從後臺重新回到前臺時呼
兩個Activity跳轉時 生命週期函式的變化
Activity 的生命週期: 生命週期函式呼叫時機 onCreate 在Activity物件被第一次建立時呼叫 onStart當Activity 變得可見是呼叫該函式 onResume當Activity開始準備與使用者互動時呼叫該方法 onPause當系
android Activity切換屏 生命週期變化問題
1、不設定Activity的android:configChanges時,切屏會重新呼叫各個生命週期,切橫屏時會執行一次,切豎屏時會執行兩次 2、設定Activity的android:configChanges="orientation"時,切屏還是會重新呼叫各個生命週期,切橫、豎屏時只會執行一次 3
Activity跳轉生命週期變化--SingleTask模式
10-21 01:22:46.969 11255-11255/com.lffd.ipcdemo I/TAG: com.lffd.ipcdemo.MainActivity---onCreate() 10-21 01:22:46.988 11255-11255/com.lffd
橫豎屏切換時activity生命週期變化的總結
activity的生命週期變化想必大家都耳熟能詳,但是橫豎屏切換時activity生命週期變化很多人肯定還很迷糊,最近在網上查詢的資料總結的大都不全面,最後在部落格園上看到一哥們總結的挺好, so,自己也寫了個demo測試了一下,發現橫豎屏切換時activity生命週期不僅
兩個Activity切換時的生命週期
兩個Activity切換時的生命週期: 舊Activity記為ActivityOld,新Activity記為ActivityNew,從舊Activity開啟新Activity開始記錄: ActivityOld#onPause() ActivityNew#onCreate() Ac
Fragment 1 切換到 Fragment 2時生命週期變化
1、通過 add hide show 方式來切換 Fragment Fragment1 的生命週期變化為:onCreate()、onCreateView、onStart()、onResume() 回撥 onHiddenChanged() 方法 Fragment2 的生命週期變化
Activity與Fragment的生命週期詳解
在安卓中Activity與Fragment是非常相似的兩個類,它們各自都擁有自己的生命週期,且都可以用來顯示佈局檔案中的檢視。其中Activity是通過setContenView()顯示檢視,而Fra
Android測試Activity和Fragment的生命週期
Activity的生命週期有7個函式,Fragment的生命週期有11個函式。 Activity生命週期除上述6個方法還有一個Restart()方法,該方法在該Activity從不可見(仍存在)到重新可見時呼叫。 測試程式碼如下: import android.a
Activity與Fragment的生命週期
一、Activity 生命週期 二、Fragment 生命週期 三、對比圖 四、測試程式碼 package com.goso.testapp; import android.app.Activity; import android.app.ListFragmen
ViewPager切換Fragment生命週期變化
很久沒有寫部落格了,今天學習了MD的TabLayout ,使用到了ViewPager,於是對於很久以來的一個疑問:ViewPager切換Fragment生命週期是如何變化的進行了一個測試。 本文研究了: 1. ViewPager2個相鄰Fragment之間的
Activity與Fragment 的生命週期對比
Fragment是3.0以後的東西,為了在低版本中使用Fragment就要用到android-support-v4.jar相容包,而FragmentActivity就是這個相容包裡面的,它提供了操作Fragment的一些方法,其功能跟3.0及以後的版本的Acti
Activity不同情況下生命週期
想要徹底弄清楚Activity在不同情況下的生命週期需要先掌握Activity的一些基礎知識 Activity完整的生命週期如下圖: 知道了Activity完整的生命週期之後還需要知道Activity的啟動模式。 Activity四種啟動模式:
Activity#finish() 對其生命週期的影響
如果在 Activity#onCreate() 方法中呼叫 finish() 方法,其生命週期會發生什麼變化? 實驗環境: compilesdksion=25.0.3; com.android.support:appcompat-v7:25.3.1
Android Fragment的FragmentTransaction 操作和對應的生命週期變化
1. Fragment的生命週期和Activity的生命週期 Fragment是依附於Activity而存在的,當Activity在onCreate時,Fragment會進行onAttach, onCreate, onCreateView, onActivityCreat
Android 從程式啟動startActivity到生命週期變化的過程
在上篇文章中,我們瞭解了Android應用程式是如何啟動的,也介紹了具體的流程呼叫。知道了整個APP的啟動過程都是由ActivityThread類中執行的,而且啟動中的生命週期的變化都是通過Handler訊息機制來完成的。那麼這篇將要具體介紹從啟動到startA
設定透明主題引起動畫失效以及開啟其他應用閃現桌面圖示的問題
近日在適配魅族手機的時候,發現設定Activity的主題的 <item name="android:windowIsTranslucent">true</item>透明狀態,或者 <item name="android:windowShowW
Activity和Fragment的生命週期執行順序
總結一下Activity和Fragment的生命週期: 1.Activity和Fragment啟動時候的生命週期 1.Activity super.onCreate執行完畢.- Fragment
IOS 初級開發入門教程(三)探究應用及檢視的生命週期變化
導讀 作業系統都會根據應用的生命週期狀態來管理和處理邏輯,這一點在Android開發上現的就已經非常好了,耳熟能詳的就是應用狀態影響記憶體回收級別和活動的生命週期。同樣,在IOS上也會充分利用應用的檢視的生命週期來進行管理應用。首先,我們先知道IOS應用在程式中的五種狀