2018-10-31

安卓系統(tǒng)是開源的

命名規(guī)則:1.5版本后用甜點(diǎn)作為代號

五大布局,

FrameLayout(框架布局)
LinearLayout(線性布局)
Gridlayout(絕對布局)
RelativeLayout(相對布局)
TableLayout(表格布局)

activity的生命周期

  • onCreate(); 當(dāng)Activity第一次被創(chuàng)建的時候,就會調(diào)用OnCreate()方法,在 OnCreate()方法中,通常要設(shè)置Activity所使用的布局文件,對按 鈕綁定監(jiān)聽器等等靜態(tài)的設(shè)置操作。
  • onResume(); 當(dāng)這個Activity能夠獲得用戶焦點(diǎn)(即用戶在屏幕上進(jìn)行操作的時 候
  • onPause(); 當(dāng)?shù)谝粋€Activity通過Intent啟動第二個Activity的時候,則會先調(diào)用 前一個Activity的onPause()方法
  • onStop(); 當(dāng)?shù)诙€Activity把第一個Activity完全遮擋住的時候,即對用戶來說 第一個Activity處于完全不可見的時候,那么第一個Activity則調(diào)用 onStop()方法將當(dāng)前Activity關(guān)閉。
  • onDestory(); 此方法將Activity銷毀,銷毀之后,若想再調(diào)用此Activity,則需要從 新調(diào)用onCreate方法

頁面跳轉(zhuǎn)同時頁面值的雙向傳遞

Bundle bundle = new Bundle(); 
bundle.putSerializable("user", user); 
intent.putExtras(bundle);
Intent intent = this.getIntent(); 
user=(User)intent.getSerializableExtra("user");

Intent顯示隱式區(qū)別

  • 顯式intent:通過名字指定目標(biāo)組件。顯式intent通 常用于應(yīng)用程序內(nèi)部消息,如一個活動啟動從屬的服 務(wù)或啟動一個姐妹活動。
  • 隱式intent:并不指定目標(biāo)的名字(組件名字字段是 空的)。隱式intent經(jīng)常用于激活其它應(yīng)用程序中的 組件。

調(diào)用系統(tǒng)Action

Fragment的優(yōu)點(diǎn)

  • 在Fragment可以使你能夠?qū)ctivity分離成多個可重用 的組件,每個都有它自己的生命周期和UI。
  • Fragment可以輕松得創(chuàng)建動態(tài)靈活的UI設(shè)計,可以適 應(yīng)于不同的屏幕尺寸,從手機(jī)到平板電腦。
  • Fragment是一個獨(dú)立的模塊,并與activity綁定在一 起,可以靜態(tài)或者在運(yùn)行中動態(tài)地添加、移除、交換等。
  • Fragment提供一個新的方式讓你在不同的安卓設(shè)備上 統(tǒng)一你的UI。
  • Fragment 解決Activity間的切換不流暢,輕量切換。
  • Fragment能替代TabActivity做導(dǎo)航,性能更好。
  • Fragment 在4.2版本中新增嵌套fragment使用方法,能夠生成 更好的界面效果。
  • Fragment做局部內(nèi)容更新更加方便,可以在Activity中使用多個 Fragment,并在需要的時候加載Fragment,提高性能。
  • 可以從startActivityForResult中接收到返回結(jié)果,但是View不能。

android使用MVC的優(yōu)點(diǎn),以及為什么

可以將UI界面顯示部分、 業(yè)務(wù)邏輯和數(shù)據(jù)處理分開。

  • 程序員可以將UI設(shè)計交給美工處理,將重點(diǎn)放在核心 代碼的編寫上,從而提高效率;
  • 在開發(fā)過程中,便于修改、新增、移除新的模塊;
  • Android系統(tǒng)專門提供了“res/values/”目錄下的諸 如strings.xml、colors.xml類型的文件,便于調(diào)用和 修改。

ListView,RecycleView列表展示以及優(yōu)點(diǎn),adapter(需要實(shí)現(xiàn)的三個方法),布局管理器,注意依賴包的添加

  • 在android開發(fā)中ListView是比較常 用的組件,它以垂直列表的形式展示 具體內(nèi)容,并且能夠根據(jù)數(shù)據(jù)的長度 自適應(yīng)顯示。用于呈現(xiàn)多條布局相同 的顯示內(nèi)容。
  • 適配器分為以下三種,均繼承自BaseAdapter:
    • ArrayAdapter:支持泛型操作,最為簡單,只能展示一行字。
    • SimpleAdapter:有最好的擴(kuò)充性,可以自定義出各種效效果。
    • SimpleCursorAdapter:可以認(rèn)為是SimpleAdapter對數(shù)據(jù)庫的 簡單結(jié)合,可以方面的把數(shù)據(jù)庫的內(nèi)容以列表的形式展示出來。

CardView各種設(shè)置

TableLayout調(diào)用addTab的方法加入新頁面

DrawerLayout+Toolbar的使用

Android的四大組件,廣播接收器(定義方法,兩種注冊方法)

  • Activity

使用步驟

  1. 創(chuàng)建新的Activity,布局名稱LoginActivity,創(chuàng)建布局與創(chuàng)建普通布局文件相同
  2. 在清單文件中添加
<activity android:name=".LoginActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
  1. 主窗體調(diào)用子窗體,我們假設(shè)從MainActivity跳轉(zhuǎn)至LoginActivity
Intent intent = new Intent();
intent.setClass(MainActivity.this,LoginActivity.class);
startActivity(intent);
  • Service

Service有兩種方式,啟動的和綁定的
啟動的生命周期:創(chuàng)建服務(wù),開始服務(wù),銷毀服務(wù)。
綁定的生命周期:創(chuàng)建服務(wù),綁定服務(wù),解除綁定,銷毀服務(wù)。

  • Broadcast Receiver

廣播接收器的實(shí)現(xiàn):繼承BroadcastReceiver類,重寫onReceive方法

public class MyReceiver extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context,"這是一個接收 器:"+intent.getStringExtra("receive"),Toast.LENGTH_LONG).show();
    }
}

廣播實(shí)現(xiàn)的兩種方式
靜態(tài)注冊(在xml中靜態(tài)指定):在清單文件中注冊BroadcastReceiver

<activity android:name=".MainActivity" >
     <intent-filter>
          <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
</activity>

動態(tài)注冊(在程序中動態(tài)注冊):在java代碼中注冊BroadcastReceiver

receiveBroadcast = new ReceiveBroadCast();
IntentFilter filter = new IntentFilter();
Filter.addAction(Tag);
registerReceiver(receiveBroadcast,filter)

區(qū)別:作用范圍不同,動態(tài)注冊只在程序過程中有效,靜態(tài)注冊是不管程序是否啟動都有用

  • Content Provider

提供了應(yīng)用程序之間共享數(shù)據(jù)的方法,為存儲和 讀取數(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): 通過uri進(jìn)行查詢,返回一個Cursor
    • insert(Uri url, ContentValues values): 向uri對應(yīng)的ContentProvider中插入values對應(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,啟動狀態(tài)or綁定狀態(tài)

  • 通過startService()啟動的服務(wù)處于“啟動的”狀態(tài),一 旦啟動,service就在后臺運(yùn)行,即使啟動它的應(yīng)用組件 已經(jīng)被銷毀了。當(dāng)任務(wù)完成時,為了節(jié)省系統(tǒng)資源,一 定要停止service,可以通過stopSelf()來停止,也可以 在其他組件中通過stopService()來停止。
  • “綁定”狀態(tài)的service,通過調(diào)用bindService()來啟動, 一個綁定的service提供一個允許組件與service交互的接 口,可以發(fā)送請求、獲取返回結(jié)果。綁定的service只有 當(dāng)應(yīng)用組件綁定后才能運(yùn)行,多個組件可以綁定一個 service,當(dāng)調(diào)用unbind()方法時,這個service就會被銷 毀了。

發(fā)送短信例子(26以下清單文件指明權(quán)限,26以上是動態(tài))

本地存儲的四種方式:特點(diǎn)及應(yīng)用場景

  • SharedPreferences:SharedPreferences提供一套 完整的存儲基本類型數(shù)據(jù)的方法,可以將數(shù)據(jù)保存到 私有數(shù)據(jù)區(qū),只能被寫入這些數(shù)據(jù)的應(yīng)用程序讀取。
  • Internal Storage:手機(jī)內(nèi)部存儲,以文件方式保存 數(shù)據(jù),只能本程序使用,外部的應(yīng)用程序無法訪問該 文件;需要注意的是,文件也是臨時性的,當(dāng)卸載本 程序時,該文件也會被刪除。
  • External Storage:手機(jī)的外部存儲(如SD卡),也是以文 件的形式存儲數(shù)據(jù),一般存儲數(shù)據(jù)量較大的公共數(shù)據(jù)。需 注意的是,保存在外部存儲設(shè)備的數(shù)據(jù)是公開且不安全的, 用戶可以自由進(jìn)行讀寫操作,甚至可以刪除。
  • SQLite Database:SQLite是標(biāo)準(zhǔn)的關(guān)系型數(shù)據(jù)庫,具有 小巧、獨(dú)立性高、安全性高、跨平臺和多語言接口等優(yōu)點(diǎn), 用戶可以使用標(biāo)準(zhǔn)的SQL語句進(jìn)行數(shù)據(jù)的增刪改查。它內(nèi) 置于Android系統(tǒng)中,一般用于存儲復(fù)雜類型的數(shù)據(jù)。

SharedPreferences的四種操作模式,保存數(shù)據(jù)時不要忘記commit()

  • Context.MODE_PRIVATE:為默認(rèn)操作模式,代表該文件是私有數(shù) 據(jù),只能被應(yīng)用本身訪問,在該模式下 寫入的內(nèi)容會覆蓋原文件的內(nèi)容
  • Context.MODE_APPEND:該模式會檢查文件是否存在,存在就往 文件追加內(nèi)容,否則就創(chuàng)建新文件
  • Context.MODE_WORLD_READABLE:表示當(dāng)前文件可以被其他應(yīng)用讀取
  • Context.MODE_WORLD_WRITEABLE:表示當(dāng)前文件可以被其他應(yīng)用寫入
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,048評論 25 709
  • 用兩張圖告訴你,為什么你的 App 會卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 13,998評論 2 59
  • 面試必背 會舍棄、總結(jié)概括——根據(jù)我這些年面試和看面試題搜集過來的知識點(diǎn)匯總而來 建議根據(jù)我的寫的面試應(yīng)對思路中的...
    luoyangzk閱讀 7,168評論 6 173
  • 今天的練習(xí)圖,橘右京,毀了
    ruoshuiYuH閱讀 222評論 0 1
  • 你說深夜的天空應(yīng)該是清爽的淡藍(lán)色,白云萬里,微風(fēng)拂面,蟋蟀蛐蛐在露天彈唱; 我不相信,斥責(zé)你是一個瞎子,看不到深夜...
    勾魂度閱讀 486評論 5 5

友情鏈接更多精彩內(nèi)容