1.簡要描述android開發(fā)的四大應(yīng)用程序組件
- Activity:Activity是android程序和用戶交互的窗口缴阎,是android構(gòu)造塊中基本的一種,它需要為保持個界面的狀態(tài),做很多持久化的事锨阿,妥善管理生命周期及一些跳轉(zhuǎn)悍抑。
- service:后臺服務(wù)于Activity吴叶,封裝有一個完整的功能邏輯實現(xiàn),接受上層指令朵纷,完成相關(guān)事務(wù)炭臭。
- Content Provider:android提供的第三方應(yīng)用程序的訪問方案,可以派生ContentProvider類袍辞,對外提供數(shù)據(jù)鞋仍。
- BroadCast Receiver:接收一種或多種intent做觸發(fā)事件,接收相關(guān)消息搅吁,做一些簡單的處理威创,轉(zhuǎn)換成一條Notification,統(tǒng)一了android的事件廣播模型谎懦。
2.AndroidManifest.xml文件中主要包括哪些信息肚豺?
- 用戶權(quán)限
- 包名,版本號
- 應(yīng)用程序Application
3.描述一下Android的數(shù)字簽名
- 目的:為你的程序打上一種標識界拦,來作為自己的標識吸申,當別人看到你的簽名時,就會知道這是與你相關(guān)的。
- 好處:
- 有利于程序升級:當新版程序和舊版程序的數(shù)字證書相同時截碴,Android系統(tǒng)才會認為這兩個程序是同一個程序的不同版本
- 有利于程序的模塊化開發(fā)和設(shè)計:Android系統(tǒng)允許擁有同一個數(shù)字簽名的程序運行在一個進程中梳侨,Android程序會將他們視為同一個程序。所以開發(fā)者可以將自己的程序分模塊開發(fā)日丹,而用戶只需要在需要的時候下載適當?shù)哪K走哺。
- 可以通過權(quán)限(permission)的方式在多個程序間共享數(shù)據(jù)和代碼:應(yīng)用程序可以和其他的程序共享概功能或者數(shù)據(jù)給那那些與自己擁有相同數(shù)字證書的程序
4.談一下你對Android權(quán)限的理解
在Android 6.0版本之前,權(quán)限都是一條龍服務(wù)的哲虾,只要用戶安裝完丙躏,AndroidManifest清單上申請的權(quán)限都會被系統(tǒng)默認授權(quán),并且授權(quán)后也撤銷不了束凑。這樣的弊端在哪里呢晒旅?有些權(quán)限可能用戶覺得不需要,比如他不想有通知的權(quán)限汪诉,不想受到通知的干擾敢朱,那么他就不能屏蔽通知,就是不需要的權(quán)限摩瞎,他去不掉拴签,自主權(quán)不在他那邊。還有一些情況是旗们,一些惡意程序蚓哩,會利用這個權(quán)限默認授權(quán),進行惡意獲取用戶數(shù)據(jù)和攻擊上渴。所以Android 6.0版本岸梨,一方面讓用戶更加容易的控制自己的隱私,一方面需要重新適配應(yīng)用權(quán)限稠氮。只有在用戶需要使用權(quán)限的時候曹阔,才去授權(quán)請求,這樣做的目的是提高用戶體驗
-
檢查并申請權(quán)限
我們需要在用到權(quán)限的地方隔披,每次都檢查是否APP已經(jīng)擁有權(quán)限赃份,
比如我們有一個下載功能,需要寫SD卡的權(quán)限奢米,
我們在寫入之前檢查是否有WRITE_EXTERNAL_STORAGE權(quán)限抓韩,沒有則申請權(quán)限if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { //申請WRITE_EXTERNAL_STORAGE權(quán)限 ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, WRITE_EXTERNAL_STORAGE_REQUEST_CODE); }
用戶選擇允許或需要后,會回調(diào)onRequestPermissionsResult方法, 該方法類似于onActivityResult
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
doNext(requestCode,grantResults);
}我們接著需要根據(jù)requestCode和grantResults(授權(quán)結(jié)果)做相應(yīng)的后續(xù)處理
private void doNext(int requestCode, int[] grantResults) {
if (requestCode == WRITE_EXTERNAL_STORAGE_REQUEST_CODE) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// Permission Granted
} else {
// Permission Denied
}
}
}
5.請寫出幾種Android數(shù)據(jù)存儲的方式
- SharedPreference :主要存放一些配置信息
- SQLite
- 文件存儲
- Content Provider
- 網(wǎng)絡(luò)存儲
6.對android NDk的理解
7.談?wù)剬OM鬓长,ROOT谒拴,RECOVER,BOOTLOADER的理解
- ROM:只讀內(nèi)存鏡像涉波。用于寫入系統(tǒng)分區(qū)的鏡像文件
- ROOT:Android源于Linux英上,root是Linux下系統(tǒng)級賬號炭序,擁有系統(tǒng)的全部權(quán)限,為了保護系統(tǒng)安全苍日,Android設(shè)計上是不會開放這個用戶的少态。
ROOT原理:通過在Android系統(tǒng)安裝某個系統(tǒng)級別的服務(wù),該服務(wù)具有root權(quán)限易遣,然后其它需要root權(quán)限的程序再向這個服務(wù)請求root權(quán)限 - RECOVER:Recovery模式指的是一種可以對安卓機內(nèi)部的數(shù)據(jù)或系統(tǒng)進行修改的模式,也叫工程模式(類似于windowspe)嫌佑。在這個模式下我們可以刷入新的安卓系統(tǒng)豆茫,或者對已有的系統(tǒng)進行備份或升級,也可以在此恢復(fù)出廠設(shè)置屋摇。
- BOOTLOADER:相當于電腦里面的bios(基本輸入輸出系統(tǒng))揩魂,手機一開機,控制手機的就是Bootloader炮温。我們通常所說的進入Bootloader火脉,實際上是指進入Bootloader的工程模式,既是刷機模式柒啤,在此模式下可以將moto的sbf文件(底包)刷到機器里面倦挂。