Android基礎考試知識點清單

第1章 Android應用開發環境

1.瞭解智能手機常見操作系統有哪些,瞭解Android和iOS兩大操作系統的特點。
2.掌握Android操作系統的四層體系結構及各層的內容。
Linux內核 Android系統內核建立在Linux 2.6 之上。
Linux內核提供了安全性、內存管理、進程管理、網絡協議棧和驅動模型等核心系統服務。
函數庫
這些庫能被Android系統中不同的組件使用。它們通過 Android 應用程序框架爲開發者提供服務。
應用程序框架層 Android應用程序框架提供了大量API供開發者使用。
應用程序層 開發者開發的各種Android App。






3.Android應用程序開發經常用到的組件有哪些,它們的作用是什麼。
四大應用組件
Activity:主要負責顯示內容
Service:後臺運行程序
BroadcastReceiver:消息接收器
ContentProvider: 負責跨應用的數據交換
Intent:不同組件間通信的載體





4.掌握Android開發環境的搭建。
開發IDE:Android Studio
可通過環境變量改變安裝位置:
ANDROID_HOME: SDK安裝文件夾
ANDROID_SDK_HOME:虛擬機文件夾



5.瞭解Android模擬器的使用。

第2章 Android應用的界面編程

1.熟練掌握LinearLayout、RelativeLayout、FrameLayout、TableLayout、GridLayout、AbsoluteLayout、ConstraintLayout這7種佈局管理器的使用。能根據實際情況選擇合適的佈局管理器進行UI界面的設計。

LinearLayout
線性佈局 將子控件在容器中按照水平或垂直方向排列開來。
orientation:設置容器內控件的排列方向
gravity:設置容器內控件的對齊方式
layout_gravity:設置子控件在父容器中的對齊方式
layout_weight :權重




TableLayout
表格佈局 TableLayout派生自 LinearLayout,相當於垂直方向的LinearLayout。
TableRow表格行,也派生自 LinearLayout,相當於水平方向的LinearLayout。
每一行上可放置數量不同的控件。
隱藏列 android:collapseColumns
收縮列 android:shrinkColumns
拉伸列 android:stretchColumns
注:列號從0開始,0號列是第1列。






FrameLayout
幀佈局 根據對齊方式把控件一個一個疊加在在一起。
先定義的在底層,後定義的在上層。

GridLayout
網格佈局 行號、列號均從0開始

RelativeLayout
相對佈局 容器內子控件由相對於兄弟控件、父容器的位置來確定。

AbsoluteLayout
絕對佈局 通過X,Y座標來控制控件位置layout_x, layout_y

常用的距離單位
px :像素
dp(dip): 設備獨立像素
sp :設置字體大小時用
In、mm、pt



ConstraintLayout約束佈局 約束佈局相當於相對佈局的升級版,可控制位於父容器的百分比處。是Android的默認佈局

Android 控制UI界面的三種方式
1.使用XML佈局文件控制UI界面
google 推薦
setContentView(R.layout.<佈局資源文件名字>)
findViewById(R.id.android:id屬性值)
2.在Java代碼中開發控制UI界面
setContentView(一個View實例)
addView()
3.混合使用XML佈局文件和Java代碼混合控制UI界面
複雜界面中常用。變化小,行爲較固定的控件放到XML文件中管理;變化多,行爲控制比較複雜的交給Java代碼管理








2.掌握佈局管理器的嵌套使用。

3.熟練掌握Android中常用控件的常用屬性及操作方法。
TextView文本框、EditView編輯框、
ImageView( src顯示的drawable對象的ID;scaleType如何縮放和移動圖片)、
Button普通按鈕、ImageButton圖片按鈕、
RadioGroup單選按鈕組、RadioButton單選框、CheckBox複選框、
Spinner列表選擇框(彈出)、
TimePicker時間選擇器(派生自FrameLayout )、
DatePicker日期選擇器(派生自FrameLayout )、
NumberPiker數值選擇器(通過拖動或輸入來選擇數值)、







4.掌握Android中高級控件
ToggleButton狀態開關按鈕、Switch開關(通常用於切換程序中的某種狀態)
ScrollView滾動視圖(只能包含一個組件,併爲該組件添加垂直滾動條)
HorizontalScrollView 水平滾動條、
AdapterView、
ListView列表視圖、
RecyclerView(靈活實現水平或垂直滾動,ListView的升級,實現更多功能,比如橫向滑動,回收利用)、
ExpandableListView可展開的列表組件(與Adapter類似,有三種實現方式:BaseExpandableListView,Simple~(List),SimpleCursorTreeAdapter(Cursor))、
AutoCompleteTextView自動完成文本框(completionThresold屬性設置用戶至少輸入幾個字符纔會顯示提示)、
StackView(以堆疊的方式顯示多個列表項)、
CalendarView日曆視圖(firstDayOfWeek設置每週的第一天;shownWeekCount設置總共顯示幾周)、
SearchView搜索框、
AlertDialog對話框、
對話框通常不充滿屏幕,對話框不會自動關閉
對話框出現時,當前Activity的界面繼續顯示但不能進行交互
對話框不是一個視圖,基類是Dialog繼承自Object
創建步驟:
(1)創建AlertDialog.Builder(創建器)
(2)利用Builder爲對話框設置圖標、標題、內容
(3)調用Builder的create()方法創建對話框
(4)調用對話框的show()方法顯示對話框
特殊對話框:DatePickerDialog、TimePickerDialog、ProgressDialog




















ProgressBar進度條、
SeekBar拖動條(thumb自定義滑塊圖片;tickMark自定義刻度圖標;監聽器OnSeekBarChangeListener( ))、
RatingBar星級評分條(rating屬性設置評分條默認星級;numStars設置總星數)、

Toast信息提示框、
toast.makeText(Context, String, Toast.LENGTH_SHORT).show()

ImageSwitcher、TextSwitcher、
Gallery、TabHost選項卡、PopupWindow(彈出窗口,類似於對話框)、
Chronometer計時器( setBase(long),setFormat(String),start(),stop(),setOnchronometerTickListener())、
AnalogClock模擬時鐘(已標記爲過時 )、
TextClock數字時鐘(本質就是一個TextView)



Menu菜單、
與Activity相關的叫選項菜單,在顯示Activity時按MENU鍵彈出,選項菜單在超過6項時,最後一項將顯示成“更多”;
與具體視圖相關的菜單叫上下文菜單,長按視圖將彈出;
android:checkableBehavior 用於定義group中菜單項的可選特徵:
single 表示菜單項爲單選
all 表示所有菜單項都是可勾選的(複選框)
none 表示所有菜單項都不可勾選
Notification通知(具有全局效果的通知,顯示在手機狀態欄上)、
(1)通過 getSystemService()獲取NotificationManager服務
(2)通過Notification.Builder構造Notifcation對象
(3)利用NotificationChannel發送通知
AdapterViewFlipper(繼承自AdapterViewAnimator,實現視圖之間切換時的漸隱漸現的效果:autoStart設置自動播放;flipInterval播放間隔;showPrevious()顯示前一項;showNext( )顯示下一項 )










5.瞭解通過Java代碼進行簡單的控件創建和操作。
private Button mBtn; //1聲明控件
mBtn=findViewById(R.id.btn); //2找到控件
mBtn.setOnClickListener(new View.OnClickListener() { //3聲明點擊事件
@Override
public void onClick(View v) {
Toast.makeText(ButtonActivity.this,“btn被點擊了”,
Toast.LENGTH_SHORT).show(); } });
6.掌握一個Android項目中各個文件夾(如:src、res等)的作用。
java目錄
java或kotlin源代碼存放目錄,如MainActivity.java等。
res資源(resource)目錄。
該目錄中存放應用使用的各種資源(xml界面文件、圖片或值資源等)。如界面佈局文件activity_main.xml。
AndroidManifest.xml 應用程序清單文件。
該文件列出了應用程序的包名(該包名將會作爲該應用的唯一標識),
列出了應用程序所提供的功能,
開發的四大組件需要在該文件中進行配置。
如果應用使用到了系統內置的應用(如電話服務、短信服務、互聯網服務、GPS服務等),也需在該文件中聲明使用權限。
R.java文件(相當於資源字典、資源清單)
這個文件由Android開發工具自動生成。 Android開發工具會自動根據你放入res目錄的資源,同步更新修改R.java文件。正因爲R.java文件是由開發工具自動生成的,所以我們應避免手動修改R.java。
R.java在應用中起到了資源字典的作用,它包含了各種資源的id,通過R.java,應用可以很方便地找到對應資源。
apk文件
編譯之後的安裝文件





















7.掌握一個Android項目中各個文件(如:main.xml、R.java、AndroidManifest.xml等)的作用,並能看懂文件裏面的內容。
Android程序源代碼分爲三類: XML佈局文件,Java源文件,資源文件
res目錄中的資源,R類中生成索引
assets目錄放置原生資源


8.瞭解Android各種資源(如:字符串、顏色、尺寸資源,數組資源,Drawable資源,佈局資源,菜單資源,樣式資源等)的作用,會使用簡單的Android資源。
在xml中引用Drawable資源:@drawable/資源名
Drawable資源文件示例

<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true">
    <shape>
      <solid android:color="#AA6600"/>
      <corners android:radius="5dp"/>
    </shape>
  </item>
</selector>

第3章 Android事件處理

1.掌握Android中事件處理的基本原理(基於監聽的事件處理和基於回調的事件處理)。
基於監聽的事件處理(處理特定事件,Android中,基於監聽的事件處理被優先調用。)
處理方式:委派式事件處理
步驟:獲取界面組件對象,實現事件監聽器,將監聽器綁定到組件對象上。
3個對象:Event Source事件源:通常爲組件;Event事件:用戶的一次操作;Event Listener事件監聽器: 對事件作出響應
4個實現監聽器的形式:內部類作爲監聽器,外部類作爲監聽器,Activity本身作爲事件監聽器,Lambda表達式作爲事件監聽器類
基於回調的事件處理(處理通用性事件,事件源與事件監聽器是統一的) 重寫Activity或組件的回調方法
每個回調方法都返回一個boolean值
若回調方法返回true, 表明該事件已處理完成,事件不會傳播出去;
若回調方法返回false, 表明該事件未處理完全,事件會傳播出去。








2.熟練掌握Android中常用的事件處理接口及其實現。
View.OnClickListener單擊事件接口
View.OnLongClickListener長按事件
View.OnKeyListener按鍵事件
View.OnFocusChangeListener焦點改變事件
View.OnTouchListener觸摸事件
RadioGroup.OnCheckedChangeListener單選改變事件
AdapterView.OnItemSelectedListener子項選中事件
DatePicker.OnDateChangedListener日期改變事件
TimePicker.OnTimeChangedListener時間改變事件








3.掌握Android中事件處理的註冊方法。
Configuration類:用於描述手機設備的配置信息
調用Activity有成員方法獲得Configuration類對象
Configuration cfg = getResources().getConfiguration();
補充:mcc國家碼、mnc網絡碼



4.瞭解Handler等類的工作原理。
Hander 在新啓動的線程中發送消息
在主線程中獲取、處理消息

Looper
每個線程最多擁有一個Looper,它的loop方法負責讀取MessageQueue中的消息
負責管理消息隊列中的消息
主UI線程中,系統已經初始化了一個消息隊列和Looper


MessageQueue
消息隊列,採用先進先出的方式管理Message

handler發送的消息被送到指定的消息隊列
handler所處的線程中必須有一個消息隊列

子線程中添加消息循環 Looper looper=Looper.prepare( );//創建looper對象
@override重寫handleMessage方法;
Looper.loop( );//啓動Looper …
handler.sendMessage(msg); …


第4章 深入理解Activity與Fragment

1、掌握創建、配置、啓動、關閉Activity的方法
創建Activity
(1)創建一個派生自Activity或其子類的類
(2)複寫回調方法:onCreate(),通常調用setContentView()設置視圖的佈局文件
(3)在AndroidManifest文件中配置
配置Activity
Android程序中每個Activity都要在AndroidManifest.xml文件中進行配置





<activity  android:name=“.ActivityName”/>

啓動Activity
通過Intent對象表明跳轉的意圖:

Intent intent=new Intent(fromActivity.this, toActivity.class);

跳轉到另一個Activity:
方法①startActivity(Intent);
啓動另一個Activity並等待返回結果:
方法②startActivityForResult(Intent intent, int requestCode);
關閉Activity
方法①關閉當前Activity:finish()
方法②關閉finishActivity(int requestCode)
與startActivityForResult配對使用






2、掌握Activity之間交換數據的方法
使用Intent在Activity之間交換數據
關係類比: Intent:輪船,Bundle:集裝箱,Data:貨物
putExtras(Bundle data):向Intent中放入數據包
putXxx(String key, Xxx value):向Bundle中放入數據
putSerializable(String key, Serializable value)
Bundle getExtras():從Intent中取出數據包
putExtra(String key, Xxx value):向Intent中放入一個數據
getXxxExtra():從Intent中取出一個數據







3、理解Activity的4種生命狀態及7個生命週期函數的調用時機
加載Activity
onCreate(Bundle): 創建時被調用,只會被調用一次
onStart() : 啓動Activity時被調用
onResume():Activity獲得焦點之前被調用/恢復Activity時被調用/該Activity再次回到前臺
運行狀態:位於前臺,用戶可見,可以獲得焦點
onPause(): 另一個Activity獲得焦點之前被調用/另一個Activity轉入前臺
暫停狀態: 其它Activity位於前臺,該Activity依然可見,不能獲得焦點
onStop(): Activity不可見時被調用
停止狀態:不可見,失去焦點,再次啓用需要調用onCreate()
onRestart():重新啓動Activity被調用,之後調用onStart()
onDestroy(): 銷燬Activity時被調用
銷燬狀態: 結束
注:①多個Activity存在Task(棧)中
②Activity的4種加載模式
standard: 標準模式,每一次都創建實例,默認
singleTop: 在棧頂時直接複用已有的實例
singleTask:同一Task只保留一個實例
singleInstance: 只保留一個實例

















4、掌握Fragment的創建及在Activity中的使用方法
Fragment作爲Activity界面組成的一部分出現, 必須嵌入Activity中才能起作用。
可以在一個Activity中同時出現多個Fragment,並且,一個Fragment亦可在多個Activity中使用。
在Activity運行過程中,可以添加、移除或者替換Fragment(add()、remove()、replace())
Fragment可以響應自己的輸入事件,並且有自己的生命週期,當然,它們的生命週期直接被其所屬的宿主activity的生命週期影響。



getActivity(): 獲得Fragment所在的Activity
findFragmentById(int id):找出Activity中包含的Fragment對象
Activity向Fragment傳遞數據:
將數據裝入Bundle對象,調用 Fragment的setArguments(Bundle)
Fragment向Activity 傳遞數據
在Fragment中定義一個接口,在Activity中實現
Activity通過FragmentManager管理Fragment
Fragment以事務的方式來管理
FragmentTransaction ft= getFragmentManager().beginTransaction();

ft.commit();
Fragment生命週期受所在Activity生命週期控制
onAttach()當Fragment被添加到Activity時被調用,該方法只會被調用一次
onDetach()Fragment與Activity分離時調用












第5章 使用Intent和IntentFilter進行通信

1、掌握Intent的各個屬性(Component、Action、Category、Data、Type、Extra、Flag)的特點與應用;
使用Intent啓動系統組件
startActivity(Intent)
startActivityForResult(Intent, int)
startService(Intent)
bindService(Intent,…)
sendBroadcast(Intent)
sendOrderedBroadcast(Intent, …)






7個屬性
Component 指明此屬性的爲顯式Intent:
ComponentName comp=new ComponentName(
FirstActivity.this, SecondActivity.class);
Intent intent = new Intent();
intent.setComponent(comp);
startActivity(intent);
沒有指定的爲隱式Intent,不指定組件名稱,通常用於激活其它應用程序中的組件:google推薦√
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivity(intent);








Action Action是一個字符串,代表一個抽象動作
標準Acitivity動作:表示將要執行的動作
標準廣播動作:表示已經發生即將報告的動作
intent.setAction()


Category Category是一個字符串,爲Action增加額外的附加類別信息

Data 通常用於向Action屬性提供操作的數據,接收一個Uri對象
intent.setData(uri);

Type 用於指定Data屬性的數據類型(MIME類型)
intent.setType(“abc/xyz”)
這兩個屬性會相互覆蓋,後設置的覆蓋前設置的,如果需要都設置,則用intent.setDataAndType(data, type)

Extras 通常用於在多個Action之間交換數據,其值應該時一個Bundle對象(相當於Map對象),它可以存入多個key-value對。
intent.putExtras(Bundle b)
Bundle b=intent.getExtras()
intent.putXXX()
intent.getXXXExtra()



Flags Flag是一個整數,表示不同來源的標記,多用於指示Android系統如何啓動Activity,以及啓動後如何對待
AddFlags()方法添加控制旗標

2、瞭解通過Action和Category、Data啓動系統組件的方法,如返回桌面、拔打電話、發送短信、瀏覽聯繫人、瀏覽網頁等
intent-filter:由哪個Activity來完成抽象動作
過濾Action、Category、Data
一個intent只能包含一個Action
一個intent可以包含多個category
一個Activity可以包含多個Action




第8章 數據存儲

1.瞭解Android中四種數據存儲的特點。

2.熟練掌握SharedPreferences存儲數據的操作。
該接口主要負責讀寫應用程序的Preference數據,其中數據爲key-value對
獲取SharedPreferences實例:
context.getSharedPreferences(String name, int mode),其中mode:
Context.MODE_PRIVATE:數據只能被本應用程序讀寫
Context.MODE_WORLD_READABLE:可被其它應用程序讀取
Context.MODE_WORLD_WRITABLE:可被其它應用程序讀寫
讀取數據:
boolean contains(String key),判斷是否包含鍵值爲key的數據
abstract Map<String, ?> getAll(),獲取SharedPreference中的全部數據
boolean getXxx(String key, Xxx defValue),獲取某個數據
寫入數據:
通過SharedPreferences的內部接口Editor完成,調用 edit()方法獲得該對象
Editor clear():清空所有數據
Editor putXxx(String key, xxx value):存入
Editor remove(String key):移除
boolean commit():編輯完成後,提交修改
數據保存:
SharedPreferences數據爲XML文件,
保存在/data/data/<package_name>/shared_prefs目錄下


















3.會使用文件進行數據存儲(包括SD卡上文件的讀寫)。
Context提供如下方法打開應用程序的數據文件夾裏的文件IO流:
FileInputStream openFileInput(String name):獲得輸入流
FileOutputStream openFileOutput(String name, int mode) :獲得輸出流
其中mode有4個取值:
MODE_PRIVATE,MODE_APPEND(追加方式打開,可追加內容)
MODE_WORLD_READABLE,MODE_WORLD_WRITEABLE
getDir(String name, int mode):在當前應用沙盒中獲取或創建name文件夾
File getFilesDir():獲取沙盒的絕對路徑
File[] fileList():獲得沙盒下所有文件列表
deleteFile(String):刪除指定的文件
SD卡上文件的讀寫:
①動態請求獲取讀寫SD卡的權限:
requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},0x123);
②判斷是否插入了SD卡:boolEnvironment.getExternalStorageState().
equals(Environment.MEDIA_MOUNTED)
③獲取外部存儲器(SD卡目錄):
Environment.getExternalStorageDirectory()或直接使用: /mnt/sdcard
【mkssdcard命令可以創建虛擬存儲卡】
④使用FileInputStream、FileOutputStream、Filereader或Filewriter進行讀寫操作
【爲了讀寫SD卡上的數據,必須在清單文件裏設置權限】























DOM解析
DOM 是 W3C(萬維網聯盟) 的推薦標準。
整個XML文檔包含一個文檔節點,若干個元素節點,下面有若干個文本節點
解析時將整個文檔加載到內存中,從根節點開始解析
SAX解析



是一種基於事件驅動的api,有兩個部分,解析器和事件處理器
XMLReader接口,負責讀取XML文檔,ContentHandler 接口,負責對發送的事件響應和進行XML文檔處理。一般的解析器繼承自DefaultHandler類

mlPullParser
PULL解析器小巧輕便,解析速度快,簡單易用,非常適合在Android移動設備中使用

JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。
JSON 語法規則:JSON 語法是 JavaScript 對象表示語法的子集。
數據在鍵/值對中,數據由逗號分隔,花括號保存對象,方括號保存數組。
JSON對數據的描述性比XML較差,JSON的速度要遠遠快於XML 。


4.熟練掌握SQLite數據庫的使用,並可以使用SQLite數據庫進行CRUD操作。
輕量級,嵌入式,適用於資源有限的設備,不需要“安裝”,單一文件 ,跨平臺/可移植性,弱類型的字段,開源:www.sqlite.org
使用SQLiteDataBase進行數據庫操作的步驟:
獲取SQLiteDataBase對象,它代表了一個與數據庫的連接;
調用SQLiteDataBase中的方法執行SQL語句;
操作SQL語句執行的結果;
關閉SQLiteDataBase,回收資源。
打開一個文件對應的數據庫:
①static SQLiteDataBase openDataBase(String path,
SQLiteDataBase.CursorFactory factory, int flags)
②static SQLiteDataBase openOrCreateDataBase(File file,
SQLiteDataBase.CursorFatory factory)
③static SQLiteDataBase openOrCreateDataBase(String path,
SQLiteDataBase.CursorFatory factory)
增:insert(String table,String nullColumnHack,ContentValues Values)
刪:int delete(String table, String whereClause, String[ ] whereArgs)
改:int update (String table, ContentValues values, String whereClause,String[ ] whereArgs)
查:Cursor rawQuery(String sql, String[] selectionArgs)
















第9章 使用ContentProvider實現數據共享

1、理解ContentProvider組件的功能和作用;
ContentProvider提供了數據讀寫的統一接口
使用ContentProvider可以在不同應用程序之間共享數據
ContenProvider以表的形式組織數據


2、掌握開發、配置ContentProvider的方法;
建立數據存儲系統
繼承ContentProvider類來提供數據訪問方式:onCreate(),insert(),delete(),update(),query() ,getType()
在AndroidManifest文件中聲明ContentProvider


3、掌握使用ContentResolver調用ContentProvider的方法;
應用程序通過ContentResolver操作ContentProvider共享的數據
ContentProvider是單實例模式
getContentResolver():獲取ContentResolver對象
ContentProvider的數據發生改變:
getContext().getContentResolver(). notifyChange(uri, null);
監聽ContentProvider的數據改變





  1. 繼承ContentObserver類,複寫onChange(boolean selfChange)方法
  2. 向Uri註冊ContentObserver監聽器

4、會使用Android操作系統提供的ContentProvider進行操作,如聯繫人、多媒體。
使用ContentProvider管理聯繫人
聲明許可:
android.permission.READ_CONTACTS
android.permission.WRITE_CONTACTS
所需的Uri:
管理聯繫人: ContactsContract.Contacts.CONTENT_URI
管理聯繫人的電話:
ContactsContract.CommonDataKinds.Phone.CONTENT_URI
管理聯繫人的Email:
ContactsContract.CommonDataKinds.Email.CONTENT_URI









第10章 Service與BroadcastReceiver

1.掌握Service組件的用法。會創建、配置、啓動、停止Service,能綁定本地Service並與之通信。瞭解Service的生命週期。
與Activity相似,代表可執行的應用程序
需要從Service類派生出子類
Service具有自己的生命週期
Service也需要在manifest.xml文件中註冊
Service 也是由Context類派生出來
Service在後臺運行,沒有用戶界面
Service不是一個獨立的進程,和應用程序在同一個進程中
Service也不是一個獨立的線程,所以有耗時操作在Service裏時,就必須開啓一個單獨的線程來處理







創建Service 的步驟:
實現Service類的子類
在manifest.xml中註冊Service組件
創建、配置Service
繼承Service類,複寫其生命週期函數:
void onCreate( ) : 創建Service後回調該方法
void onStartCommand(Intent intent, int flags, int startId): 通過startService()啓動Service時都會回調該方法
void onDestroy( ) : 當Service 被關閉之前
abstract IBinder onBind( ):綁定Service時調用, Service子類必須實現該方法
boolean onUnbind( ):解除綁定時調用
啓動與停止服務
啓動Service
Intent intent=new Intent(this, oneService.class);
startService(intent);【顯式】
Android 5.0後只能顯式啓動Service
停止Service
stopService(Intent)
stopSelf(id)
綁定本地Service並與之通信
①Activity端
bindService(Intent intent, ServiceConnection conn, int flags)
unbindService(ServiceConnection conn)
②Service端
IBinder onBind(Intent intent)
boolean onUnbind(Intent intent)
③ServiceConnection 接口
onServiceConnected(ComponentName name, IBinder binder)
onServiceDisconnected(ComponentName name)


























生命週期
①StartService:onCreate()➡onStartCommand()➡onDestroy()
②bindService:onCreate()➡onBind()➡onUnbind()➡onDestroy()

2.掌握常用的系統Service(如:TelephonyManager、SmsManager、ActivityManager、AlarmManager等)的功能和用法
TelePhonyManager
獲得系統服務:getSystemService(id)
管理手機通話狀態、電話網絡信息等:
TelePhonyManager tManager=
(TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
監聽手機來電:
監聽器:PhoneStateListener { onCallStateChanged() }
綁定:tManager. listen(PhoneStateListener listener, int event)
SmsManager
SmsManager sms=SmsManager. getDefault( );
AlarmManager
手機鬧鐘,定時功能 ,
定時更換壁紙WallpaperManager【權限:android.permission.SET_WALLPAPER】
Context.getSystemService(Context.ALARM_SERVICE).
設置鬧鐘:
void set(int type, long triggerAtTime, PendingIntent operation)
ActivityManager
獲得正在運行的進程的信息
ActivityManager actManager=
(ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);



















3.瞭解PendingIntent的作用,會利用PendingIntent發送Notification和發送短信。

4.理解BroadcastReceiver組件的作用。會開發、配置BroadcastReceiver組件,掌握普通廣播和有序廣播的區別,會使用BroadcastReceiver接收有序廣播。
BroadcastReceiver系統全局的廣播消息接收器
擁有自己的進程,時刻監聽程序發出的廣播
創建BroadcastReceiver:
(1) 繼承BroadcastReceiver類, 複寫onReceive(Context context, Intent intent) 方法
(2) 在manifest.xml中註冊BroadcastReceiver
(3) 配置intent-filter:
①在manifest.xml中

<action android:name=“eg.broadcast.test”

②在JAVA程序代碼中設置:
MyReceiver receiver=new MyReceiver();
IntentFilter filter=new IntentFilter();
filter.addAction(“eg.broadcast.test”);
registerReceiver(receiver, filter);
發送廣播:
創建Intent對象
sendBroadcast(intent); 普通廣播
sendOrderedBroadcast(intent); 有序廣播
有序廣播: 根據優先級,依次接收廣播
設置級別:
(1) android:priority -1000~1000
(2) 調用IntentFilter對象的SetPriority()
接收到廣播的receiver可以終止廣播:
調用BroadcastReceiver對象的abortBroadcast( )方法
也可以將本次處理的結果存入廣播中, 傳給下一個接收者:
setResultExtras(Bundle) // 向廣播中加入消息繼續廣播
getResultExtras(Bundle) // 取出廣播中附加的消息
開機自動運行的Service:
BroadcastReceiver接收Action爲ACTION_BOOT_COMPLETED常量的Intent
短信提醒:
android.provider.Telephony.SMS_RECEIVED
手機電量提示:
ACTION_BATTERY_CHANGED
ACTION_BATTERY_LOW


































發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章