主頁 > 移動端開發 > Android基礎考試知識點清單

Android基礎考試知識點清單

2021-01-17 13:54:33 移動端開發

第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

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/249925.html

標籤:其他

上一篇:Android事件分發機制一:事件是如何到達activity的?

下一篇:Android Wifi 2.4G 5G附近掃描查看

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【從零開始擼一個App】Dagger2

    Dagger2是一個IOC框架,一般用于Android平臺,第一次接觸的朋友,一定會被搞得暈頭轉向。它延續了Java平臺Spring框架代碼碎片化,注解滿天飛的傳統。嘗試將各處代碼片段串聯起來,理清思緒,真不是件容易的事。更不用說還有各版本細微的差別。 與Spring不同的是,Spring是通過反射 ......

    uj5u.com 2020-09-10 06:57:59 more
  • Flutter Weekly Issue 66

    新聞 Flutter 季度調研結果分享 教程 Flutter+FaaS一體化任務編排的思考與設計 詳解Dart中如何通過注解生成代碼 GitHub 用對了嗎?Flutter 團隊分享如何管理大型開源專案 插件 flutter-bubble-tab-indicator A Flutter librar ......

    uj5u.com 2020-09-10 06:58:52 more
  • Proguard 常用規則

    介紹 Proguard 入口,如何查看輸出,如何使用 keep 設定入口以及使用實體,如何配置壓縮,混淆,校驗等規則。

    ......

    uj5u.com 2020-09-10 06:59:00 more
  • Android 開發技術周報 Issue#292

    新聞 Android即將獲得類AirDrop功能:可向附近設備快速分享檔案 谷歌為安卓檔案管理應用引入可安全隱藏資料的Safe Folder功能 Android TV新主界面將顯示電影、電視節目和應用推薦內容 泄露的Android檔案暗示了傳說中的谷歌Pixel 5a與折疊屏新機 谷歌發布Andro ......

    uj5u.com 2020-09-10 07:00:37 more
  • AutoFitTextureView Error inflating class

    報錯: Binary XML file line #0: Binary XML file line #0: Error inflating class xxx.AutoFitTextureView 解決: <com.example.testy2.AutoFitTextureView android: ......

    uj5u.com 2020-09-10 07:00:41 more
  • 根據Uri,Cursor沒有獲取到對應的屬性

    Android: 背景:呼叫攝像頭,拍攝視頻,指定保存的地址,但是回傳的Cursor檔案,只有名稱和大小的屬性,沒有其他諸如時長,連ID屬性都沒有 使用 cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DURATIO ......

    uj5u.com 2020-09-10 07:00:44 more
  • Android連載29-持久化技術

    一、持久化技術 我們平時所使用的APP產生的資料,在記憶體中都是瞬時的,會隨著斷電、關機等丟失資料,因此android系統采用了持久化技術,用于存盤這些“瞬時”資料 持久化技術包括:檔案存盤、SharedPreference存盤以及資料庫存盤,還有更復雜的SD卡記憶體儲。 二、檔案存盤 最基本存盤方式, ......

    uj5u.com 2020-09-10 07:00:47 more
  • Android Camera2Video整合到自己專案里

    背景: Android專案里呼叫攝像頭拍攝視頻,原本使用的 MediaStore.ACTION_VIDEO_CAPTURE, 后來因專案需要,改成了camera2 1.Camera2Video 官方demo有點問題,下載后,不能直接整合到專案 問題1.多次拍攝視頻崩潰 問題2.雙擊record按鈕, ......

    uj5u.com 2020-09-10 07:00:50 more
  • Android 開發技術周報 Issue#293

    新聞 谷歌為Android TV開發者提供多種新功能 Android 11將自動填表功能整合到鍵盤輸入建議中 谷歌宣布Android Auto即將支持更多的導航和數字停車應用 谷歌Pixel 5只有XL版本 搭載驍龍765G且將比Pixel 4更便宜 [圖]Wear OS將迎來重磅更新:應用啟動時間 ......

    uj5u.com 2020-09-10 07:01:38 more
  • 海豚星空掃碼投屏 Android 接收端 SDK 集成 六步驟

    掃碼投屏,開放網路,獨占設備,不需要額外下載軟體,微信掃碼,發現設備。支持標準DLNA協議,支持倍速播放。視頻,音頻,圖片投屏。好點意思。還支持自定義基于 DLNA 擴展的操作動作。好像要收費,沒體驗。 這里簡單記錄一下集成程序。 一 跟目錄的build.gradle添加私有mevan倉庫 mave ......

    uj5u.com 2020-09-10 07:01:43 more
最新发布
  • 歡迎頁輪播影片

    如圖,引導開始,球從上落下,同時淡入文字,然后文字開始輪播,最后一頁時停止,點擊進入首頁。 在來看看效果圖。 重力球先不講,主要歡迎輪播簡單實作 首先新建一個類 TextTranslationXGuideView,用于影片展示 文本是類似的,最后會有個圖片箭頭影片,布局很簡單,就是一個 TextVi ......

    uj5u.com 2023-04-20 08:40:31 more
  • 【FAQ】關于華為推送服務因營銷訊息頻次管控導致服務通訊類訊息

    一. 問題描述 使用華為推送服務下發IM訊息時,下發訊息請求成功且code碼為80000000,但是手機總是收不到訊息; 在華為推送自助分析(Beta)平臺查看發現,訊息發送觸發了頻控。 二. 問題原因及背景 2023年1月05日起,華為推送服務對咨詢營銷類訊息做了單個設備每日推送數量上限管理,具體 ......

    uj5u.com 2023-04-20 08:40:11 more
  • 歡迎頁輪播影片

    如圖,引導開始,球從上落下,同時淡入文字,然后文字開始輪播,最后一頁時停止,點擊進入首頁。 在來看看效果圖。 重力球先不講,主要歡迎輪播簡單實作 首先新建一個類 TextTranslationXGuideView,用于影片展示 文本是類似的,最后會有個圖片箭頭影片,布局很簡單,就是一個 TextVi ......

    uj5u.com 2023-04-20 08:39:36 more
  • 【FAQ】關于華為推送服務因營銷訊息頻次管控導致服務通訊類訊息

    一. 問題描述 使用華為推送服務下發IM訊息時,下發訊息請求成功且code碼為80000000,但是手機總是收不到訊息; 在華為推送自助分析(Beta)平臺查看發現,訊息發送觸發了頻控。 二. 問題原因及背景 2023年1月05日起,華為推送服務對咨詢營銷類訊息做了單個設備每日推送數量上限管理,具體 ......

    uj5u.com 2023-04-20 08:39:13 more
  • iOS從UI記憶體地址到讀取成員變數(oc/swift)

    開發除錯時,我們發現bug時常首先是從UI顯示發現例外,下一步才會去定位UI相關連的資料的。XCode有給我們提供一系列debug工具,但是很多人可能還沒有形成一套穩定的除錯流程,因此本文嘗試解決這個問題,順便提出一個暴論:UI顯示例外問題只需要兩個步驟就能完成定位作業的80%: 定位例外 UI 組 ......

    uj5u.com 2023-04-19 09:16:23 more
  • FIDE重磅更新!性能飛躍!體驗有禮!

    FIDE 開發者工具重構升級啦!實作500%性能提升,誠邀體驗! 一直以來不少開發者朋友在社區反饋,在使用 FIDE 工具的程序中,時常會遇到諸如加載不及時、代碼預覽/渲染性能不如意的情況,十分影響開發體驗。 作為技術團隊,我們深知一件趁手的開發工具對開發者的重要性,因此,在2023年開年,FinC ......

    uj5u.com 2023-04-19 09:16:15 more
  • 游戲內嵌社區服務開放,助力開發者提升玩家互動與留存

    華為 HMS Core 游戲內嵌社區服務提供快速訪問華為游戲中心論壇能力,支持玩家直接在游戲內瀏覽帖子和交流互動,助力開發者擴展內容生產和觸達的場景。 一、為什么要游戲內嵌社區? 二、游戲內嵌社區的典型使用場景 1、游戲內打開論壇 您可以在游戲內繪制論壇入口,為玩家提供沉浸式發帖、瀏覽、點贊、回帖、 ......

    uj5u.com 2023-04-19 09:15:46 more
  • iOS從UI記憶體地址到讀取成員變數(oc/swift)

    開發除錯時,我們發現bug時常首先是從UI顯示發現例外,下一步才會去定位UI相關連的資料的。XCode有給我們提供一系列debug工具,但是很多人可能還沒有形成一套穩定的除錯流程,因此本文嘗試解決這個問題,順便提出一個暴論:UI顯示例外問題只需要兩個步驟就能完成定位作業的80%: 定位例外 UI 組 ......

    uj5u.com 2023-04-19 09:14:53 more
  • FIDE重磅更新!性能飛躍!體驗有禮!

    FIDE 開發者工具重構升級啦!實作500%性能提升,誠邀體驗! 一直以來不少開發者朋友在社區反饋,在使用 FIDE 工具的程序中,時常會遇到諸如加載不及時、代碼預覽/渲染性能不如意的情況,十分影響開發體驗。 作為技術團隊,我們深知一件趁手的開發工具對開發者的重要性,因此,在2023年開年,FinC ......

    uj5u.com 2023-04-19 09:14:08 more
  • 游戲內嵌社區服務開放,助力開發者提升玩家互動與留存

    華為 HMS Core 游戲內嵌社區服務提供快速訪問華為游戲中心論壇能力,支持玩家直接在游戲內瀏覽帖子和交流互動,助力開發者擴展內容生產和觸達的場景。 一、為什么要游戲內嵌社區? 二、游戲內嵌社區的典型使用場景 1、游戲內打開論壇 您可以在游戲內繪制論壇入口,為玩家提供沉浸式發帖、瀏覽、點贊、回帖、 ......

    uj5u.com 2023-04-19 09:08:34 more