安卓系統(tǒng)是開(kāi)源的
命名規(guī)則:1.5版本后用甜點(diǎn)作為代號(hào)
五大布局卜高,
FrameLayout(框架布局)
LinearLayout(線性布局)
Gridlayout(絕對(duì)布局)
RelativeLayout(相對(duì)布局)
TableLayout(表格布局)
activity的生命周期
- onCreate(); 當(dāng)Activity第一次被創(chuàng)建的時(shí)候,就會(huì)調(diào)用OnCreate()方法厂榛,在 OnCreate()方法中慢叨,通常要設(shè)置Activity所使用的布局文件纽匙,對(duì)按 鈕綁定監(jiān)聽(tīng)器等等靜態(tài)的設(shè)置操作。
- onResume(); 當(dāng)這個(gè)Activity能夠獲得用戶焦點(diǎn)(即用戶在屏幕上進(jìn)行操作的時(shí) 候
- onPause(); 當(dāng)?shù)谝粋€(gè)Activity通過(guò)Intent啟動(dòng)第二個(gè)Activity的時(shí)候拍谐,則會(huì)先調(diào)用 前一個(gè)Activity的onPause()方法
- onStop(); 當(dāng)?shù)诙€(gè)Activity把第一個(gè)Activity完全遮擋住的時(shí)候哄辣,即對(duì)用戶來(lái)說(shuō) 第一個(gè)Activity處于完全不可見(jiàn)的時(shí)候,那么第一個(gè)Activity則調(diào)用 onStop()方法將當(dāng)前Activity關(guān)閉赠尾。
- onDestory(); 此方法將Activity銷毀力穗,銷毀之后,若想再調(diào)用此Activity气嫁,則需要從 新調(diào)用onCreate方法
頁(yè)面跳轉(zhuǎn)同時(shí)頁(yè)面值的雙向傳遞
Bundle bundle = new Bundle();
bundle.putSerializable("user", user);
intent.putExtras(bundle);
Intent intent = this.getIntent();
user=(User)intent.getSerializableExtra("user");
Intent顯示隱式區(qū)別
- 顯式intent:通過(guò)名字指定目標(biāo)組件当窗。顯式intent通 常用于應(yīng)用程序內(nèi)部消息,如一個(gè)活動(dòng)啟動(dòng)從屬的服 務(wù)或啟動(dòng)一個(gè)姐妹活動(dòng)寸宵。
- 隱式intent:并不指定目標(biāo)的名字(組件名字字段是 空的)崖面。隱式intent經(jīng)常用于激活其它應(yīng)用程序中的 組件。
調(diào)用系統(tǒng)Action
Fragment的優(yōu)點(diǎn)
- 在Fragment可以使你能夠?qū)ctivity分離成多個(gè)可重用 的組件梯影,每個(gè)都有它自己的生命周期和UI巫员。
- Fragment可以輕松得創(chuàng)建動(dòng)態(tài)靈活的UI設(shè)計(jì),可以適 應(yīng)于不同的屏幕尺寸甲棍,從手機(jī)到平板電腦简识。
- Fragment是一個(gè)獨(dú)立的模塊,并與activity綁定在一 起感猛,可以靜態(tài)或者在運(yùn)行中動(dòng)態(tài)地添加七扰、移除、交換等陪白。
- Fragment提供一個(gè)新的方式讓你在不同的安卓設(shè)備上 統(tǒng)一你的UI颈走。
- Fragment 解決Activity間的切換不流暢,輕量切換咱士。
- Fragment能替代TabActivity做導(dǎo)航立由,性能更好。
- Fragment 在4.2版本中新增嵌套fragment使用方法序厉,能夠生成 更好的界面效果锐膜。
- Fragment做局部?jī)?nèi)容更新更加方便,可以在Activity中使用多個(gè) Fragment脂矫,并在需要的時(shí)候加載Fragment枣耀,提高性能。
- 可以從startActivityForResult中接收到返回結(jié)果,但是View不能捞奕。
android使用MVC的優(yōu)點(diǎn)牺堰,以及為什么
可以將UI界面顯示部分、 業(yè)務(wù)邏輯和數(shù)據(jù)處理分開(kāi)颅围。
- 程序員可以將UI設(shè)計(jì)交給美工處理伟葫,將重點(diǎn)放在核心 代碼的編寫(xiě)上,從而提高效率院促;
- 在開(kāi)發(fā)過(guò)程中筏养,便于修改、新增渐溶、移除新的模塊;
- Android系統(tǒng)專門(mén)提供了“res/values/”目錄下的諸 如strings.xml弄抬、colors.xml類型的文件,便于調(diào)用和 修改掂恕。
ListView拖陆,RecycleView列表展示以及優(yōu)點(diǎn),adapter(需要實(shí)現(xiàn)的三個(gè)方法)懊亡,布局管理器,注意依賴包的添加
- 在android開(kāi)發(fā)中ListView是比較常 用的組件依啰,它以垂直列表的形式展示 具體內(nèi)容,并且能夠根據(jù)數(shù)據(jù)的長(zhǎng)度 自適應(yīng)顯示店枣。用于呈現(xiàn)多條布局相同 的顯示內(nèi)容速警。
- 適配器分為以下三種,均繼承自BaseAdapter:
- ArrayAdapter:支持泛型操作艰争,最為簡(jiǎn)單坏瞄,只能展示一行字桂对。
- SimpleAdapter:有最好的擴(kuò)充性甩卓,可以自定義出各種效效果。
- SimpleCursorAdapter:可以認(rèn)為是SimpleAdapter對(duì)數(shù)據(jù)庫(kù)的 簡(jiǎn)單結(jié)合蕉斜,可以方面的把數(shù)據(jù)庫(kù)的內(nèi)容以列表的形式展示出來(lái)逾柿。
CardView各種設(shè)置
TableLayout調(diào)用addTab的方法加入新頁(yè)面
DrawerLayout+Toolbar的使用
Android的四大組件,廣播接收器(定義方法宅此,兩種注冊(cè)方法)
-
Activity
使用步驟
- 創(chuàng)建新的Activity机错,布局名稱LoginActivity,創(chuàng)建布局與創(chuàng)建普通布局文件相同
- 在清單文件中添加
<activity android:name=".LoginActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
- 主窗體調(diào)用子窗體父腕,我們假設(shè)從MainActivity跳轉(zhuǎn)至LoginActivity
Intent intent = new Intent();
intent.setClass(MainActivity.this,LoginActivity.class);
startActivity(intent);
-
Service
Service有兩種方式弱匪,啟動(dòng)的和綁定的
啟動(dòng)的生命周期:創(chuàng)建服務(wù),開(kāi)始服務(wù)璧亮,銷毀服務(wù)萧诫。
綁定的生命周期:創(chuàng)建服務(wù)斥难,綁定服務(wù),解除綁定帘饶,銷毀服務(wù)哑诊。
-
Broadcast Receiver
廣播接收器的實(shí)現(xiàn):繼承BroadcastReceiver類,重寫(xiě)onReceive方法
public class MyReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context,"這是一個(gè)接收 器:"+intent.getStringExtra("receive"),Toast.LENGTH_LONG).show();
}
}
廣播實(shí)現(xiàn)的兩種方式
靜態(tài)注冊(cè)(在xml中靜態(tài)指定):在清單文件中注冊(cè)BroadcastReceiver
<activity android:name=".MainActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
動(dòng)態(tài)注冊(cè)(在程序中動(dòng)態(tài)注冊(cè)):在java代碼中注冊(cè)BroadcastReceiver
receiveBroadcast = new ReceiveBroadCast();
IntentFilter filter = new IntentFilter();
Filter.addAction(Tag);
registerReceiver(receiveBroadcast,filter)
區(qū)別:作用范圍不同及刻,動(dòng)態(tài)注冊(cè)只在程序過(guò)程中有效镀裤,靜態(tài)注冊(cè)是不管程序是否啟動(dòng)都有用
-
Content Provider
提供了應(yīng)用程序之間共享數(shù)據(jù)的方法,為存儲(chǔ)和 讀取數(shù)據(jù)提供了統(tǒng)一的接口缴饭。
- URI:content://com.example.stuprovider/StuInfo/2/name
表示需要操作StuInfo表中ID為2的記錄的name字段 - ContentResolver方法介紹:
- query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder): 通過(guò)uri進(jìn)行查詢暑劝,返回一個(gè)Cursor
- insert(Uri url, ContentValues values): 向uri對(duì)應(yīng)的ContentProvider中插入values對(duì)應(yīng)的數(shù) 據(jù),返回最新添加記錄的uri颗搂。
- update(Uri uri, ContentValues values, String where, String[] selectionArgs): 更新Uri指定位置的數(shù)據(jù)铃岔,返回更新的行數(shù)。
- delete(Uri url, String where, String[] selectionArgs): 刪除指定Uri并且符合一定條件的數(shù)據(jù)峭火,返回刪除的行數(shù)毁习。
Service,啟動(dòng)狀態(tài)or綁定狀態(tài)
- 通過(guò)startService()啟動(dòng)的服務(wù)處于“啟動(dòng)的”狀態(tài)卖丸,一 旦啟動(dòng)纺且,service就在后臺(tái)運(yùn)行,即使啟動(dòng)它的應(yīng)用組件 已經(jīng)被銷毀了稍浆。當(dāng)任務(wù)完成時(shí)载碌,為了節(jié)省系統(tǒng)資源,一 定要停止service衅枫,可以通過(guò)stopSelf()來(lái)停止嫁艇,也可以 在其他組件中通過(guò)stopService()來(lái)停止。
- “綁定”狀態(tài)的service弦撩,通過(guò)調(diào)用bindService()來(lái)啟動(dòng)步咪, 一個(gè)綁定的service提供一個(gè)允許組件與service交互的接 口,可以發(fā)送請(qǐng)求益楼、獲取返回結(jié)果猾漫。綁定的service只有 當(dāng)應(yīng)用組件綁定后才能運(yùn)行,多個(gè)組件可以綁定一個(gè) service感凤,當(dāng)調(diào)用unbind()方法時(shí)悯周,這個(gè)service就會(huì)被銷 毀了。
發(fā)送短信例子(26以下清單文件指明權(quán)限陪竿,26以上是動(dòng)態(tài))
本地存儲(chǔ)的四種方式:特點(diǎn)及應(yīng)用場(chǎng)景
- SharedPreferences:SharedPreferences提供一套 完整的存儲(chǔ)基本類型數(shù)據(jù)的方法禽翼,可以將數(shù)據(jù)保存到 私有數(shù)據(jù)區(qū),只能被寫(xiě)入這些數(shù)據(jù)的應(yīng)用程序讀取。
- Internal Storage:手機(jī)內(nèi)部存儲(chǔ)闰挡,以文件方式保存 數(shù)據(jù)仇矾,只能本程序使用,外部的應(yīng)用程序無(wú)法訪問(wèn)該 文件解总;需要注意的是贮匕,文件也是臨時(shí)性的,當(dāng)卸載本 程序時(shí)花枫,該文件也會(huì)被刪除刻盐。
- External Storage:手機(jī)的外部存儲(chǔ)(如SD卡),也是以文 件的形式存儲(chǔ)數(shù)據(jù)劳翰,一般存儲(chǔ)數(shù)據(jù)量較大的公共數(shù)據(jù)敦锌。需 注意的是,保存在外部存儲(chǔ)設(shè)備的數(shù)據(jù)是公開(kāi)且不安全的佳簸, 用戶可以自由進(jìn)行讀寫(xiě)操作乙墙,甚至可以刪除。
- SQLite Database:SQLite是標(biāo)準(zhǔn)的關(guān)系型數(shù)據(jù)庫(kù)生均,具有 小巧听想、獨(dú)立性高、安全性高马胧、跨平臺(tái)和多語(yǔ)言接口等優(yōu)點(diǎn)汉买, 用戶可以使用標(biāo)準(zhǔn)的SQL語(yǔ)句進(jìn)行數(shù)據(jù)的增刪改查。它內(nèi) 置于Android系統(tǒng)中佩脊,一般用于存儲(chǔ)復(fù)雜類型的數(shù)據(jù)蛙粘。
SharedPreferences的四種操作模式,保存數(shù)據(jù)時(shí)不要忘記commit()
- Context.MODE_PRIVATE:為默認(rèn)操作模式,代表該文件是私有數(shù) 據(jù),只能被應(yīng)用本身訪問(wèn)威彰,在該模式下 寫(xiě)入的內(nèi)容會(huì)覆蓋原文件的內(nèi)容
- Context.MODE_APPEND:該模式會(huì)檢查文件是否存在,存在就往 文件追加內(nèi)容,否則就創(chuàng)建新文件
- Context.MODE_WORLD_READABLE:表示當(dāng)前文件可以被其他應(yīng)用讀取
- Context.MODE_WORLD_WRITEABLE:表示當(dāng)前文件可以被其他應(yīng)用寫(xiě)入