Android Activity生命週期簡介
前面有提到何謂Activity: 最簡單的就是把Activity看成一個User Interface Program. 它會提供使用者一個互動式的介面功能. 當然一個activity通常不只一個UI, 所有的Activity在系統裏由Activity stack 所管理, 當一個新的Activity被執行後,它將會被放置到stack的最頂端,並且變成"running activity", 而之前的Activity原則上還是存在stack中,但不會是在foreground(前景)的情況.
一個Activity基本上有四個狀態 Active, Paused, Stopped, Dead:
Active (活動):
Active狀態是使用者啟動Application 或 Activity 後,Activity 在運行中的狀態.
在 Android 平台上, 一個時刻只會有一個 Activity 處於Active 或 Running 狀態。其他的 Activity 都處於未Dead, Stopped 或是Paused 的狀態.
Dead/Inactive (已回收或未啟動)
Dead狀態是 Activity 尚未被啟動, 已經被手動終止, 或已經被系統回收的狀態.
要手動終止 Activity, 可以在程式中呼叫 finish 函式.
如果是被系統回收, 可能是因為記憶體不足, 系統根據記憶體不足時的回收規則, 將處於Stopped狀態的 Activity 所佔用的記憶體回收.
Dead狀態是 Activity 尚未被啟動, 已經被手動終止, 或已經被系統回收的狀態.
要手動終止 Activity, 可以在程式中呼叫 finish 函式.
如果是被系統回收, 可能是因為記憶體不足, 系統根據記憶體不足時的回收規則, 將處於Stopped狀態的 Activity 所佔用的記憶體回收.
下面的流程圖說明一個Activity運行的情況, 長方形代表callback methods(回呼函式), 可以做出想要處理的事情, 有顏色的部份就是實際Activity會處於的狀態.
上圖有三個主要 lifetime :
1. Entire lifetime: 一個Activity的Entire lifetime是由onCreate()開始, 一直到onDestroy()結束.
一個Activity可以把所有的資源設定寫在onCreate中, 一直到onDestroy()時再釋放出來.2. Visible lifetime: 一個Activity的Visible lifetime是指在onStart()到onStop()之間.
在這段時間內,使用者可以在螢幕上看見Activity, 要注意這個"Visible"是個形容, Activity不見得一定在foreground(前景)跟使用者直接互動.3. Foreground lifetime: 一個Foreground lifetime 指 onResume() 到 onPause() 之間. 這個時期的Activity是在其他的Activity的前面, 且可以直接跟使用者進行互動. 所以這段時期指的就是圖中的Activity is running.
簡單的總結幾個動作:
onCreate()用來做程式的初使化動作;onDestory()通常都拿來把onCreate()時的資料做釋放的動作;
onPause()時把需要保存的資料保存;onResume()把保存的資料拿回來使用.
一般啟動:
onCreate -> onStart -> onResume啟動一個 Activity 的基本流程是: 分配資源給這個 Activity(onCreate), 然後將 Activity 內容顯示到螢幕上(onStart), 在一切就緒後, 取得螢幕的控制權(onResume), 使用者可以開始使用這個程式。
onPause(1) -> onCreate(2) -> onStart(2) - onResume(2) -> onStop(1)先凍結原本的 Activity, 再交出直接存取螢幕能力(onPause )的過程. 直到 Activity 2 完成一般啟動流程後, Activity 1 才會被停止.
onPause(2) -> onRestart(1) -> onStart(1) -> onResume(1) -> onStop(2) -> onDestroy(2)按 Back鍵可以回到原本的 Activity。
onPause -> onStop -> onDestroy如果程式中有直接呼叫 finish 函式來關閉 Activity的話, 系統會暫停(Pause), 停止(Stop)然後銷毀(Destroy)。
onCreate -> onStart -> onResume被回收掉的 Activity 一旦又重新被呼叫時,會像一般啟動一樣再次呼叫 Activity 的 onCreate 函式.
JAVA
final-修飾字(關鍵字)如果一個類被宣告為final,意味著它不能再派生出新的子類,不能繼承父類別。因此一個類別不能既被宣告為 abstract的,又被宣告為final的。將變數或方法宣告為final,可以保証它們在使用中不被改變。被宣告為final的變數必須在宣告時给定 初值,而在以後的引用中只能讀取,不可修改。被宣告為final的方法也同樣只能使用,不能重載finally-再異常處理時提供 finally 用來執行任何最後時的清除操作。如果抛出一個異常,那麼相匹配的 catch 子句就會執行,然後控制就會進入 finally 區塊(如果有的話)。
finalize-方法名。Java 技術允許使用 finalize() 方法在垃圾收集器將對象從内存中清除出去之前做必要的清理工作。這個方法是由垃圾收集器在確定這個對象没有被引用時對這個對象使用的。它是在 Object 類中定義的,因此所有的類都繼承了它。子類覆蓋 finalize() 方法以整理系統資源或者執行其他清理工作。finalize() 方法是在垃圾收集器刪除對象之前對這個對象使用的
c#
double a = 1;
double b = 0;
try
{
double c = a/b;
Console.WriteLine (c));
}
catch (DivideByZeroException e)
{
Console.WriteLine ("
DivideByZeroException
");
}
catch (Exception e)
{
Console.WriteLine ("
Exception
");
}
JQuery
$("#matrix td").click(function(){var td = $(this);
td.parent("table:first").find("td").css("background-color", "white");//背景設為白色
var tr = td.parent();
tr.children().css("background-color", "red");//背景設為紅色
var nthChild = tr.children().index(td) + 1;
tr.siblings().find("td:nth-child(" + nthChild + ")").css("background-color", "green");//背景設為綠色
td.css("background-color", "black");//背景設為黑色
});
HTML5新增的API
A) history.pushState(data, title [, url])﹕往歷史記錄堆棧頂部添加一條記錄﹔data會在onpopstate事件觸發時作為參數傳遞過去﹔title為頁面標題﹐當前所有瀏覽器都會 忽略此參數﹔url為頁面地址﹐可選﹐缺省為當前頁地址﹔
B) history.replaceState(data, title [, url]) ﹕更改當前的歷史記錄﹐參數同上﹔
C) history.state﹕用於存儲以上方法的data數據﹐不同瀏覽器的讀寫權限不一樣﹔
D) window.onpopstate﹕響應pushState或replaceState的調用﹔
有 了這幾個新的API﹐針對支持的瀏覽器﹐我們可以構建用戶體驗更好的應用了。就像剛提到的Facebook相冊﹐雖然是AJAX的方式﹐但用戶可以直接復 制頁面地址分享給好友﹐好友打開看到的就是AJAX加載的數據﹐做到了書籤化。
Object-C
- alloc:用於新建一個實體時,例如:Person *person=[[Person alloc] init];
- new:相當於呼叫alloc加init,但init經常會有不同的初始化函式
- retain:用於需要參考實體的物件,讓保留的記憶體+1,這個方法會讓參考實體共享處理結果的數值和方法。呼叫retain的物件最後也需要自行呼叫release來釋放
- copy:用於複製實體的方法,呼叫copy的物件,會變成實體的擁有者。最後也需要自行呼叫release來釋放。
OOAD的5個UML圖
物件導向的系統分析與設計 (OOAD)統一建模語言 (UML)
SOAP
PHP與Java之Web開發整合技術可分成SOAP(Simple Object Access Protocol)、Quercus、PHP/Java Bridge三種,這些技術可以讓PHP與Java在開發Web應用程式時互相使用彼此的程式庫。SOAP是IBM及Microsoft等公司開發、W3C推薦,用來實作分散式物件技術的協定。SOAP提供一套以XML來包裝程式呼叫、參數傳遞與訊 息回傳的機制,藉由XML純文字的特性,可透過HTTP、HTTPS、SMTP等通信管道穿越企業的防火牆,比起CORBA、Java RMI及DCOM這些以專屬binary格式傳送資料的分散式物件技術協定,SOAP具有與程式語言、平台和硬體無關的特性。
Java語言最常使用的SOAP套件是Apache Axis2,PHP的是php-soap延伸模組。
沒有留言:
張貼留言