Course 2-1-Android Framework介紹,特色與提供的功能
Download
Report
Transcript Course 2-1-Android Framework介紹,特色與提供的功能
1
Android 現況概述
Android OS Stack
開發環境介紹與熟悉
四大程式元件簡介
Activity
程式基本框架介紹
Intent
Service
Broadcast Receiver
Content Provider
開發演練
View System簡介
Layouts
進階應用介紹
UI s
主程式架構說明&練習
Android 現況概述
Android OS Stack
開發環境介紹與熟悉
四大程式元件簡介
Activity
程式基本框架介紹
Intent
Service
Broadcast Receiver
Content Provider
開發演練
View System簡介
Layouts
進階應用介紹
UI s
主程式架構說明&練習
3
Framework Stack OverView
4
5
Linux Kernel
Base on Linux 2.6
已修改kernel, 以避免GPL授權問題(連結)
Linux 版權 GNU General Public License version 2
(GPLv2)
Driver移動至linux userspace,硬體廠商不需要公開driver
source
Power Management修改
針對手機環境
沒有使用, 就關掉
6
Libraries
Library以c/c++開發
屬系統元件, 開發者可以透過Application Framework
來使用這些功能
7
Android Runtime
Core Libraries
對應於Java Programming Language
Dalvik Virtual Machine (簡稱DVM)
針對手機開發
Run(綁) on Linux Virtual Memory, multiple
processes
執行指令精簡(節省記憶體)&CPU效率(not JIT)
詳細說明, 請看 連結
Application Framework
Google提供API,此framework內已經具備多種不同的基
礎軟體元件,在開發app時,可直接使用
內容可參考網頁
http://developer.android.com/reference/packages.html
9
Applications
包含內建的應用程式-聯絡人、eMail 、Map 、
Calendar 、簡訊…等等
從Market下載的程式
自行開發的程式
10
Applications(cont.)
使用Java language開發
編譯完成, 以tool/aapt.exe 包裹為.apk
Apk ->application
三種基本特性
每個application在自己的Linux process中執行
每個process有自己的Java VM, isolate from other
applications
每個application權限獨立分開, 不能讀取其他application
的檔案
11
Android 現況概述
Android OS Stack
開發環境介紹與熟悉
四大程式元件簡介
Activity
程式基本框架介紹
Intent
Service
Broadcast Receiver
Content Provider
開發演練
View System簡介
Layouts
進階應用介紹
UI s
主程式架構說明&練習
12
Application Framework上
應用程式常用的四大區塊
四大元件:
Activities-管理應用程式顯示畫面的類別
Activity Life Cycle
Services-服務功能
Services Life Cycle
Broadcast receivers -意圖與廣播接收
Content Provider-內容提供
溝通橋樑: Intent
13
1.Activity
包括UI, 以及與user互動
上面可以放button、list、picture、text…
UI可動態調整(增加、減少、換位置)
透過intent跳轉至其他activity
費時的程式要放到Service, handler…, 超過5秒, 會出現
ANR (Android is Not Responding)
Reference: Component Lifecycles
Activity !!!
Life Cycle
啟動->出現畫面
onCreate()
onStart()
onResume()
關閉畫面->結束
onPause()
onStop()
onDestroy()
Reference: Component Lifecycles
Android 的虛擬機(VM) -主要有四種狀態:
Active (活動)
使用者啟動應用程式或 Activity 後,Activity 運行中的狀態
在 Android 平台上,同一個時刻只會有一個 Activity 處於活動(Active)或運
行(Running)狀態。
Reference: http://code.google.com/p/androidbmi/wiki/LifeCycle
Paused (暫停)
「Paused」狀態是當 Activity 暫時暗下來,退到背景
畫面的狀態。
當我們使用Toast、AlertDialog、或是電話來了時,都
會讓原本運行的 Activity 退到背景畫面。新出現的
Toast、AlertDialog等介面元件蓋住了原來的 Activity
畫面。Activity 處在「Paused」狀態時,使用者無法
與原 Activity 互動。
Demo => ApiDemo , App/Dialog
17
Stopped (停止)
「Stopped」狀態是有其他 Activity 正在執行,而這個
Activity 已經離開螢幕,不再動作的狀態。
透過長按「Home」鈕,可以叫出所有處於「Stopped
」狀態的應用程式列表。
在「Stopped」狀態的 Activity,還可以透過「
Notification」來喚醒。
18
Dead (已回收或未啟動)
「Dead」狀態是 Activity 尚未被啟動、已經被手動終
止,或已經被系統回收的狀態。
要手動終止 Activity,可以在程式中呼叫「finish」函
式
如果是被系統回收,可能是因為記憶體不足了,所以
系統根據記憶體不足時的回收規則,將處於「
Stopped」狀態的 Activity 所佔用的記憶體回收
19
繼續行程時的行為
Intent
用來描述一個程式想要作些什麼事情
每個Intent都帶有一個動作(action),並根據不同的動
作去行動
例
public void onClick()
{
Uri uri = Uri.parse("http://www.nccu.com.tw/");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
要開啟一個網頁, 由Android去決定誰要開網頁
Intent Filter : 向系統宣告該Activity可以做甚麼 ?
24
Demo :
demo code -> demo_Intent
透過Intent , 達到Activity 之間的切換
25
Service
長時間於背景執行, 無UI畫面
可避免ANR的問題
例
播放音樂
背景接收網路訊息
壓縮or解壓縮檔案
利用bindService(), 讓Activity與Service溝通
26
Broadcast Receiver
監聽有興趣的Intent
利用sendBroadcast()啟動一個廣播, 並附上對應參數
要於5sec.內完成
可啟動特定Activity or Service or 更新畫面
例
Android系統於電力狀況有變動時, 傳遞一個電力廣播
若我們是一個電力容量顯示程式, 則可接收此廣播, 並顯
示於畫面上, 或鈴聲, 或震動
Demo Code\ demo_BroadcastReceiver
用DDMS模擬簡訊發送,進行測試
Reference : http://www.cnblogs.com/xirihanlin/archive/2009/08/03/1537402.html
27
Content Provider
與其他程式分享資料
例
存取Contact
content://contacts/people/45 (傳回:聯絡人編號45的聯絡人記
錄)
content://contacts/people/ (傳回:全部聯絡人)
Demo : demo code/demo_ContentProvider
Reference :
http://ysl-paradise.blogspot.com/2008/11/content-provider.html
http://blog.sina.com.cn/s/blog_3f7f41d40100cnax.html
28
上述Android Framework 之下,
所帶來的App特色
1.應用程式一律平等 (Applications)
http://www.youtube.com/watch?v=3aUjukCdPyQ
2.應用程式無界限 (Intent filter)
http://www.youtube.com/watch?v=3LkNlTNHZzE
3.應用程式可輕鬆嵌入網頁 (webView)
http://www.youtube.com/watch?v=Ex7YsQ_YH2U
4.應用程式可以平行執行 (service 機制)
http://www.youtube.com/watch?v=7lScgyXGxwo
Reference: http://www.youtube.com/user/androiddevelopers
Android 現況概述
Android OS Stack
開發環境介紹與熟悉
四大程式元件簡介
Activity
程式基本框架介紹
Intent
Service
Broadcast Receiver
Content Provider
開發演練
View System簡介
Layouts
進階應用介紹
UI s
App權限管理與設定
30
View
31
32
Views
33
View是所有UI(Widget)的父類
別
http://developer.android.com/intl/zh-TW/reference/android/widget/TextView.html
Refer: http://school.brad.tw/mod/resource/view.php?id=384
34
LayOut-決定UI的排版方式
Reference : Declaring Layout.
LayOut
36
Reference : Declaring Layout.
LayOut
Demo: demo code\demo_ChangeLayOut
Reference: ApiDemo ->Views ->Layouts
37
View – Widget
直接與使用者進行互動的View Object
EX: Buttons , checkboxes , EditText ,…
EX: Date Picker , Clock , Zoom Controls
可以根據需要,在既有的Widget 上建立新的View Object
Ref : Building Custom Components
38
39
40
Tabs
41
42
ImageView
43
ImageSwitcher
44
Progress Bar
45
Radio Group
46
47
Auto-Completion
Api demo/com.example.android.apis.view
48
DatePicker
49
Rating Bar
50
如何讓UI跟使用者產生互動?
UI Events :
1. Define an event listener
EX: View.OnClickListener
View.OnTouchListener
View.OnKeyListener
2. register it with the View
51
Android 現況概述
Android OS Stack
開發環境介紹與熟悉
四大程式元件簡介
Activity
程式基本框架介紹
Intent
Service
Broadcast Receiver
Content Provider
開發演練
View System簡介
Layouts
進階應用介紹
UI s
主程式架構說明&練習
52
package com.demo.android.hello;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
53
public class myMainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
54
練習1.:Button -> 顯示
Demo code ->pratice00_Button
Step:
1. res/-> Layout/-> main.xml
Button , TextView
程式碼中
2. Button ,TextView實體宣告,
3.透過findViewById 從資源檔中取得對應的介面元件
4.定義onClickListener 事件
5.註冊到Button中
55
//2.
Button btn_MyButton;
TextView txt_MyText;
//3.
btn_MyButton = (Button)findViewById(R.id.Button01);
txt_MyText = (TextView)findViewById(R.id.TextView01);
//5.
btn_MyButton.setOnClickListener(showText);
//4.
private View.OnClickListener showText = new OnClickListener()
{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
txt_MyText.setText("Hello World !");
}
};
練習2
同上,但顯示文字時,同時也更換顏色,字型大小
setTextColor()
http://developer.android.com/intl/zhTW/reference/android/widget/TextView.html
Color
http://developer.android.com/intl/zhTW/reference/android/graphics/Color.html
57
Next
Android 現況概述
進一步介紹開發環境
開發環境介紹與熟悉
Emulator
Debug Tools
程式基本框架介紹
建立第一個App – BMI
Demo Code
開發演練
Plan & Design
Coding- UI描述 與設計
程式流程解讀
與使用者對話- Dialog
Activities & Intent
進階應用介紹
Data Storage
多媒體-圖片與聲音
後續延伸-Web Service