Android實驗二: Activity的生命週期及Intent
i. 問題描述
本次實驗要求開發一個簡單的APP,來理解Activity的生命週期以及使用Intent在Activity之間進行簡單的資料傳送。
1.如何定義APP介面的XML檔案構建:4個按鈕,3個文字以及2個定高的文字顯示框。
2.如何記錄Activity_A,Activity_B,Activity_C各個生命週期的呼叫。
3.如何將Activity_A的生命週期狀態傳給Activity_B,再傳給Activity_C,再將所有的生命週期記錄週期記錄並回傳給Activity_A。
4.如何在點選Dialog按鈕時,如何彈出對話方塊並呼叫原Activity,使其處於Pause狀態。
5.如何在顯示生命週期時,第一個文字框的最上面顯示最新的生命週期,第二個文字框顯示按照一定的順序:A,B,C。
ii. 設計簡要描述
新建主Activity_A,然後使用工具分別新建Activity_B,Activity_C,為Activity新增相應的顏色資源,名稱資源,控制元件資源。
1.APP介面設定,可以參考相關佈局XML檔案,其中為了使第一個文字框可以看到以前的狀態實現滾動檢視,可以使用ScrollView標籤
2.為了記錄Activity_A,Activity_B,Activity_C各個生命週期的呼叫,以及將Activity_A的生命週期狀態傳給Activity_B,再傳給Activity_C,再將所有的生命週期記錄週期記錄並回傳給Activity_A,首先重寫Activity_A,Activity_B,Activity_C各個生命週期,記錄當前的生命週期狀態,然後通過Java流方式的檔案儲存方式實現記錄。新建四個檔案(都是MODE_PRIVATE方式儲存):
dataABC:來記錄Activity_A,Activity_B,Activity_C相繼被呼叫的生命週期。
dataA:來記錄Activity_A當前的生命週期。
dataB:來記錄Activity_B當前的生命週期。
dataC:來記錄Activity_C當前的生命週期。
每次Activity呼叫生命週期時,將當前狀態寫入檔案;同時讀取檔案的資訊,傳送到TextView中。
儲存資訊及顯示文字的虛擬碼如下:
showText(String inputText){//傳入當前生命狀態
將當前Activity的生命週期inputText寫入相應的檔案;
將當前Activity的生命週期inputText寫入總記錄dataABC檔案;
讀取當前Activity相應的檔案;
讀取總記錄dataABC檔案;
向文字框內格式化顯示資訊;
}
3.為了在點選Dialog按鈕時,彈出對話方塊並呼叫原Activity,使其處於Pause狀態。可以使用Activity形式的對話方塊,先新建一個Activity_Dia,然後新增相應資源,修改佈局檔案,最後修改AndroidMainfest.xml檔案,即可實現該功能。
iii. 設計簡要描述(補充)
根據ii.設計簡要描述所完成所有工作以後,APP依然還存在2個嚴重的bug(iii.程式清單程式碼部分是修改正確以後的程式碼,沒有這兩個bug了),以下將詳細描述:
1.問題:在儲存資料的4個資料夾,APP一旦安裝,其中dataABC記錄Activity_A,Activity_B,Activity_C,的檔案,會記錄APP從安裝到解除安裝的所有記錄,而不是每次開啟APP以後呼叫的記錄。
分析:新建Activity_A 時,要進行初始化。
遇到新的問題:如果直接選擇在新建Activity_A時,將所有檔案置空,那麼會導致Activity_A呼叫Activity_B,然後Activity_B再呼叫Activity_A時,會造成記錄丟失,相當於重新打開了APP。
解決方案:新建Activity_A 時,考慮是開啟APP新建Activity_A,還是從Activity_B或者Activity_C呼叫新建Activity_A。這裡藉助intent通訊機制,從Activity_B或者Activity_C呼叫新建Activity_A時,在intent上附加一個值為假的布林值,在新建Activity_A時,只有當布林變數(預設為真)為假時,不初始化檔案,否則初始化檔案,這樣就解決問題了。
2.問題:Activity_A成功呼叫Activity_B以後,此時在Activity_B中,顯示Activity_A的狀態是Pause,而不是Stop,從而導致兩個文字框都出現了顯示錯誤(與正確結果不一樣)。
分析:Activity_A成功呼叫Activity_B,系統呼叫的過程是:
Create_A→Start_A→Resume_A→Pause_A→Create_B→Start_B→Resume_B→Stop_A,
Activity_B正常顯示時,是顯示Resume_B過程中的檔案資料,此時Stop_A還未呼叫,所以出現了一個時差,系統完成呼叫Stop_A時,在Activity_B中已經顯示了資料,不會再更新顯示。
解決方案:通過對生命週期的分析可以發現,Activity_A成功呼叫Activity_B,此時僅Activity_A是Pause狀態;Activity_B成功呼叫Activity_C,此時僅Activity_B是Pause狀態;所以顯示當前狀態為Pause的Activity,必定是主動呼叫的Activity,且呼叫完成以後是Stop狀態。所以在顯示狀態時,一旦發現是Pause狀態,我們就可以將其狀態改變為Stop,達到提前顯示的目的。
iv. . 程式清單
整個程式清單包括12個檔案:
Activity_A.java; Activity_B.java; Activity_C.java; Activity_Dia.java;
activity_a.xml; activity__b.xml; activity__c.xml; activity__dia.xml;
AndroidMainfest.xml; colors.xml; string.xml; stytle.xml;
注:
如果連線失效可發郵件到[email protected]獲取原始碼,我會第一時間回覆。
相關推薦
Android實驗二: Activity的生命週期及Intent
i. 問題描述 本次實驗要求開發一個簡單的APP,來理解Activity的生命週期以及使用Intent在Activity之間進行簡單的資料傳送。 1.如何定義APP介面的XML檔案構建:4個按鈕,3個文字以及2個定高的文字顯示框。
android:Activity-生命週期
2、可見的生命週期,從onStart()開始到onStop()結束。在這段時間,可以看到Activity在螢幕上,儘管有可能不在前臺,不能和使用者互動。在這兩個介面之間,需要保持顯示給使用者的UI資料和資源等,例如:可以在onStart中註冊一個IntentReceiver來監聽資料變化導致UI的變動,當不再
Android Activity生命週期及狀態變化所呼叫方法
Activity在建立到銷燬有三個狀態,分別為執行狀態、暫停狀態、停止狀態。在不同狀態相互切換時會觸發一些事件,執行一些回撥方法來通知狀態的變化。 方法 描述 void onCreat
Android:Activity——生命週期深入詳解
一、生命週期全面分析Android活動預設執行在當前程序所擁有的棧中,前臺可見的活動則在活動棧的最頂部。其他後臺活動則在棧的裡面,在正常的情況下(記憶體充足)其他的活動並沒有被回收或者殺死,它們仍然存在於棧中保持著原來的狀態。當前面的活動退出後,後面的活動就會搬到前臺使得被使
Android總結篇系列:Activity生命週期
Android官方文件和其他不少資料都對Activity生命週期進行了詳細介紹,在結合資料和專案開發過程中遇到的問題,本文將對Activity生命週期進行一次總結。 Activity是由Activity棧進管理,當來到一個新的Activity後,此Activity將被加入到Activity棧頂,之前的A
Android問題:Activity生命週期事件
四狀態:活躍、暫停、停止、銷燬。 當Android中Activity在執行的時候,Activity的活動狀態由Android和Activity棧的形式管理。當前活動的Activity位於棧頂。 隨著不同應用的執行,每個Activity都可能在活動狀態和非活動狀態之間切換。
Android基礎:Activity生命週期細化
一、 細化Activity的生命週期 在進行Android應用開發的時候,需要考慮如何使用Activity的生命週期中的方法使得程式符合使用者的期望且在activity不需要的時候不會導致系統資源的浪費。下面從activity的啟動和銷燬、暫停和恢復、
Activity的生命週期及Intent(ActivityLifeCycle)
1.Android生命週期 Android是使用任務棧(Task)來管理活動的,一個任務就是一組存放在棧裡的活動的集合,這個棧也被稱作返回棧(Back Stack)。棧是一種後進先出的資料結構*(後來者居上)。在預設情況下,每當我們啟動了一個新的活動,它會在返回棧中入棧,並處於
Android四大元件之Activity-生命週期
一. Android 四大元件包括 Activity 活動 Service 服務 Broadcast Receiver 廣播接收者 Content Provider 內容提供者 1.什麼是Activity? 使用者可與其提供的螢幕進行互動,以執行撥打電話、拍
Android 四大元件之 Activity生命週期
一、 Activity 的生命週期概念 Activity 的生命週期指的是, Activity 物件從被建立到銷燬的全過程 二、 Activity 的狀態 執行狀態( Running): 該狀態表示 Activity 可見並且擁有使用者焦點; 暫停狀
【架構分析】Android鎖屏與Activity生命週期的變化
概述 Android開機啟動後預設會先進入鎖屏然後滅屏休眠, 本文旨在介紹這個過程中最先啟動的Home Launch Activity (其實在Android N上最早被啟動的是Settings中的FallbackHome Activity) 如何發生相關的生命週期變化, 以及AMS
Activity生命週期及啟動模式——程式碼實踐篇
一、概述本篇主要簡單介紹一下activity的生命週期和啟動模式。同時,我們會用程式碼實踐在不同的啟動模式下,生命週期的具體執行方式。二、Activity的生命週期首先,讓我們看一下關於Activity生命週期的一張經典圖片:在講Activity生命週期之前,我們先需要理解三
Android—第一張(Activity+生命週期)
當啟動一個Activity,Android系統就會一次呼叫 1.Create() (Killable NO) //當Activity第一次被建立的時候會呼叫此方法. //用法,一般都會在onCreate的方法裡寫,呼叫配置檔案,繫結監聽器,獲得佈局屬性等等; 2 onS
Android全面解析之Activity生命週期
## 前言 很高興遇見你~ 歡迎閱讀我的文章。 關於Activity生命週期的文章,網路上真的很多,有很多的部落格也都講得相當不錯,可見Activity的重要性是非常高的。事實上,我猜測每個android開發者接觸的第一個android元件都是Activity。我們從新建第一個Activity開始,運行了
Android 開發:(六)Activity生命週期以及函式意義
簡述: 1.在日常應用中Activity是與使用者互動的介面,它提供了一個使用者完成相關操作的視窗。當我們在開發中建立Activity後,通過呼叫setContentView(View)方法來給該Activity指定一個佈局介面,而這個介面就是提供給使用者互動的介面。Androi
Android apk動態載入機制的研究(二) 資源載入和activity生命週期管理
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Android 深刻理解Activity生命週期的作用及意義
前言 Activity生命週期是研究Android開發最基礎的知識點之一,熟練掌握生命週期的特性可以在實際開發中避免踩坑。比如,一些UI的初始化和回收操作、框架庫的註冊於反註冊(摧毀)、執行緒的啟動和停止等。另外,本文在最後章節還會講解系統回收造成的問題。本文就是針對各
Android之Activity生命週期總結(二)
上一次寫了一下正常情況下的生命週期,這一次在這裡對異常狀態的生命週期進行一個個人的總結。 Activity除了使用者正常的操作所導致的生命週期方法的呼叫,但是還有一些極端的情況會導致Activity 生命週期 無法按照正常的情況去呼叫。下面具體的分析異
實驗一 第一個Android程式和Activity生命週期
實驗一 第一個Android程式和Activity生命週期 實驗目的 實驗要求 工程程式碼 實驗目的 生成執行第一個Android程式,熟悉瞭解Android手機開發平臺的基本構成和使用方法,熟悉Android應用
【Android歸納】Activity生命週期-基於實驗的最新總結
不說太多廢話,先上兩張最基本的圖吧 簡單說明一下: 1. onCreate()它會在活動第一次被建立的時候呼叫。你應該在這個方法中完成活動的初始化操作,比如說載入布局、繫結事件等。2. onS