activity:在智慧型手機打開應用程式(google map、email、看圖程式)之後,每個視窗都是activity。一個應用程式(Application)可以有多個activity
每個應用程式都有MainActivity相當於C語言的主函式。
每當開啟新的activity(開新視窗)那麼之前的activity進入stop狀態
但是並非終止(kill)而是將activity存放在系統記憶體堆疊之中
Create Activity:
每個開發者寫的activity必須繼承Activity這個類別(extend Activity)。
在這個activity(不知道只有MainAcitvity還是所有的activity)
必須實作(callback methods)
當activity發生create(新開視窗)、stop(跳到其他視窗)、
rsume(跳回原本視窗)、destroyed(關閉視窗,)會呼叫這些callback methods
其中兩個最重要的callback methods是:
onCreate():
activity之中必須有這個method.每當開啟activity一定會先呼叫這個funcction
最重要的是必須呼叫setContentView()顯示使用介面的版面配置
onPause():
使用者離開activity時候會呼叫這個function;離開不代表關閉activity,有可能只是暫時停用。
Implement user interface(實作介面):
android看到的按鈕、文字框框、選項框框等這些東西,在android視為"物件"又稱作Widgets(小裝飾品),這些物件由View這個類別衍伸而來。
我們可以用這些物件來設計視窗的版面,這種動作有個術語稱作
layout(布局、版面配置)。
layout也是物件,也是容器。可以裝其他的layout或者Widgets
layout由ViewGroup衍伸而來(ViewGroup是View的子類別),
除了在xml檔案建立view物件,我們也可以在.java檔案插入view物件
activity lifecycle觀念是很"重要"的"基本"觀念
Android使用Activity的觀念,將執行中的應用程式分成五大類
1.foreground process
2.visible process
3.background process
4.empty process
5.service process
android會依照這五類別判斷執行中的應用程式activity是屬於哪一類型,給予不同生命週期。意味著在android系統中即使使用者沒有將程式關閉,當程式處於某種process類別時,有可能自動被android給關掉(kill)。
因此程式存在與否並非由應用程式本身自行決定,而是由android透過運行機制,依照那些畫面或訊息對使用者最重要或系統目前有多少記憶體可用,來決定是否關掉程式。
底下的protected都是用overriding技巧
package com.example.liearlayouttest;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView red;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
red =(TextView)findViewById(R.id.red);
red.setOnClickListener(new OnClickListener(){
public void onClick(View arg0){
toPage2();
}
});
red.setText(" "+red.getWidth());
}
private void toPage2(){
Intent it = new Intent();
it.setClass(this,Page2.class);
startActivity(it);
}
protected void onStart(){
super.onStart();
red.setText(""+red.getWidth());
}
protected void onResume(){
super.onResume();
red.setText(" "+red.getWidth());
}
protected void onPause(){
super.onPause();
Log.i("yyp",""+red.getWidth());
}
protected void onStop(){
super.onStop();
Log.i("yyp",""+red.getWidth());
}
protected void onRestart(){
super.onRestart();
Log.i("yyp",""+red.getWidth());
//紀錄執行的過程並顯示出來
}
}
沒有留言:
張貼留言