Android 考試之葵花寶典-SPxiaomin著

能夠幫助到大家,我感到非常地開心。隱約發(fā)現(xiàn)我自從上周總結(jié)完了之后,就沒有好好的看過 Android 了,心中充滿了恐懼,%><%,希望明天不要掛,我想靜靜了。
能夠舍己為人,這也是一種非常好地品質(zhì)。掛我一個,成就大家,(*^
_^*) 嘻嘻……此生無憾,誰叫我是雷鋒呢。

祝大家考試順利?。?!

Android架構(gòu)層次

  • 4層:
    • 應用程序?qū)樱?
      • 手機上的app。
    • 應用程序框架層,
      • 開發(fā)app用到的api接口。
    • 核心類庫,
      • 系統(tǒng)庫 & Android 運行環(huán)境。
    • Linux內(nèi)核。
      • 提供硬件驅(qū)動。

AndroidManifest.xml清單文件的主要內(nèi)容

  • 四大組件注冊
  • 權(quán)限聲明
  • 程序最低兼容的版本和最高版本

四大組件及其注冊(重要)

  • Activity(管理Android應用程序的用戶界面)

    <activity
      android:name="cn.itcast.activitybasic.ActivityExample"
      android:label="ActivityExample">
      <intent-filter>
        <action android:name="android.intent.action.MAIN"> // 表示將當前 Activity 設(shè)置為程序最先啟動的 Activity。
        <category android:name="android.intent.category.LAUNCHER"> // 表示讓當前 Activity 在桌面上創(chuàng)建圖標。
      </intent-filter>
    </activity>
    
  • 內(nèi)容提供者(ContentProvider)(用于保存和檢索數(shù)據(jù))

    <provider
      android:name="cn.itcast.db.PersonDBProvider" // 代表繼承于 ContentProvider 類的全路徑名稱
      android:authorities="cn.itcast.db.personprovider"> // 代表了訪問本 provider 的路徑
    </provider>
    
  • 廣播接收者

    // 注冊常駐型廣播
    <receiver android:name="cn.itcast.MyBroadcastReceiver"> // 創(chuàng)建的廣播接收者的全路徑名;
      <intent-filter android:priority="20"> // 該廣播的優(yōu)先級
        <action android:name="android.provider.Telephony.SMS_RECEIVED" />
      </intent-filter>
    </receiver>
    
    // 注冊非常駐型廣播
    MyBroadcastReceiver receiver = new MyBroadcastReceiver();
    // 實例化過濾器并設(shè)置要過濾的廣播
    String action = "android.provider.Telephony.SMS_RECEIVED";
    IntentFilter intentFilter = new IntentFilter(action);
    // 注冊廣播
    registerReceiver(receiver, intentFilter);
    
  • 服務(service) 長期在后臺運行且不提供用戶界面。

    <service android:name="cn.itcast.startService.MyService" />
    

布局的xml文件及Java代碼寫法,setContentView, findViewById(重要)

  • RelativeLayout:

    • 相對容器: layout_align(ParentLeft|ParentTop|ParentRight|ParentBottom)

    • 相對于控件:

      • layout_(toRightOf|toLeftOf|above|below)
      • layout_align(Baseline|Left|Right|Top|Bottom)
  • LinearLayout:

    • 分為兩種:水平線性布局 & 垂直線性布局。

    • 使用方法:

      <LinearLayout
        android:orientation="vertical 或者 horizontal">
      </LinearLaout>
      
  • TableLayout:

    <TableLayout>
      <TableRow>
        <Button 
          android:layout_column="0" /> // 數(shù)值從0開始
      </TableRow>
    </TableLayout>  
    
  • GridLayout

    <GridLayout
      android:columnCount="4"
      android:orientation="horizontal">
        <Button 
          android:layout_column="3" /> // 數(shù)值從0開始
       <Button />
       <Button 
         android:layout_columnSpan="2" /> // or android:layout_rowSpan
    </GridLayout>  
    
  • FrameLayout

  • AbsoluteLayout

    <AbsoluteLayout>
      <Button 
        android:layout_x="10dp" /> // or android:layout_y
    </AbsoluteLayout>    
    
  • Java 代碼寫法

    public class MainActivity extends Activity {
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
      }
    }
    

Activity創(chuàng)建及使用過程

簡記法: 記不住蟲(繼、布、注、重)

  1. 定義一個類繼承自 android.app.Activity 或者其子類;
  2. res/layout 目錄中創(chuàng)建一個 xml 文件,用于創(chuàng)建 Activity 的布局;
  3. AndroidManifest.xml 文件中注冊 Activity
  4. 重寫 ActivityonCreate 方法,并在該方法中使用 setContentView() 加載指定的布局文件。

彈出Toast的程序

Toast 組件有兩個方法:

  1. makeText() : 用于設(shè)置要顯示的字符串;
  2. show() :顯示消息框;
```
Toast 變量名稱 = Toast.makeText(Context, Text, Time);
變量名稱.show();
// Context:表示應用程序環(huán)境的信息; 使用方法:"主程序類型.this",e.g. MainActivity.this
// Text:要顯示的信息字符串;
// Time: 顯示時長,Toast.LENGTH_LONG, Toast.LENGTH_SHORT
```

單擊按鈕,監(jiān)聽器的程序(三種)

  1. 創(chuàng)建內(nèi)部類 ;
  2. 主類中實現(xiàn) OnClickListener 接口;
  3. 匿名內(nèi)部類;

6種常見的布局類型

  1. 相對
  2. 絕對
  3. 線性
  4. 表格
  5. 網(wǎng)格

Intent跳轉(zhuǎn)及傳遞參數(shù)

  • Activity跳轉(zhuǎn)的程序

    Intent intent = new Intent(this, Activity.class);
    startActivity(intent);
    
  • Activity跳轉(zhuǎn)時傳遞參數(shù)的程序

    // Activity01
    String data = "Hello Acitvity02";
    Intent intent = new Intent(this, Activity02.class);
    intent.putExtra("extra_data", data);
    startActivity(intent);
    
    // Activity02
    Intent intent = getIntent();
    String data = intent.getStringExtra("extra_data");
    
  • startActivity與startActivityForResult的區(qū)別

    startActivityForResult 可以使用回傳數(shù)據(jù),然后 startActivity 不可以。

  • new intent(如上示例代碼);

  • intent.putExtra, getStringExtra, getIntExtra(如上示例代碼);

  • 顯式意圖與隱式意圖

    顯示意圖:在 Intent 啟動 Activity 時,需要明確指定激活組件的名稱。
    隱式意圖:在 Intent 啟動 Activity 時,沒有明確指定組件名。

SharedPreferences讀寫

  • SharedPreferences sp = context.getSharedPreferences(String name, int mode);
    // name 表示文件名
    // mode 表示文件操作模式: 
    1. MODE_PRIVATE: 該SharedPreferences中的數(shù)據(jù)只能被 `本` 應用程序 `讀寫`。
    2. MODE_APPEND: 該SharedPreferences中的數(shù)據(jù)可以被`追加`。
    3. MODE_WORLD_READABLE:  該SharedPreferences中的數(shù)據(jù)可以被 `其它` 應用程序`讀`。
    4. MODE_WORLD_WRITEABLE: 該SharedPreferences中的數(shù)據(jù)可以被 `其它` 應用程序`讀寫`。
    
    方法種類:
    1. contains 判斷是否包含
    2. getAll 獲取全部
    3. get(Boolean|Int|Float|Long|String|StringSet) 獲取值
    
  • SharedPreferences sp = context.getSharedPreferences(String name, int mode);
    Editor editor = sp.edit(); 獲取此實例對象才可以進行編輯;
    editor.put(String|StringSet); 存入數(shù)據(jù);
    editor.remove(); 刪除數(shù)據(jù);
    editor.clear(); 清空全部數(shù)據(jù);
    editor.commit(); 提交修改;
    

SQLite數(shù)據(jù)庫操作怎么做? SQLiteOpenHelper, SQLiteDatabase,Cursor各自的作用、方法

  • SQLiteOpenHelper

    • 作用: 是一個抽象類,該類用于創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)庫版本更新。

    • 方法:

      1. SQLiteOpenHelper 構(gòu)造方法;
      2. onCreate 創(chuàng)建數(shù)據(jù)庫時調(diào)用的方法;
      3. onUpgrade 數(shù)據(jù)庫版本更新時調(diào)用;
      4. getReadableDatabase 創(chuàng)建或打開一個只讀的數(shù)據(jù)庫;
      5. getWritableDatabase 創(chuàng)建或打開一個讀寫的數(shù)據(jù)庫;
  • SQLiteDatabase

    • 作用: 是一個數(shù)據(jù)庫訪問類,該類封裝了一系列數(shù)據(jù)庫操作的API。

    • 方法:

      1. insert 添加一條記錄;
      2. query 查詢數(shù)據(jù);
      3. rawQuery 執(zhí)行帶占位符的 SQL 查詢;
      4. update 修改特定查詢;
      5. delete 刪除表中特定記錄;
      6. execSQL 執(zhí)行一條帶占位符的 SQL 語句;
      7. close 關(guān)閉數(shù)據(jù)庫;
  • Cursor

    • 作用: 是一個游標接口,在數(shù)據(jù)庫操作中作為返回值,相當于結(jié)果集 ResultSet。

    • 方法:

      • move:

        1. moveToNext 移動光標到下一行;
        2. moveToPrevious 移動光標到上一行;
        3. moveToFirst 移動光標到第一行;
        4. moveToLast 移動光標到最后一行;
        5. moveToPosition 移動光標到指定位置;
      • get:

        1. getInt 獲取指定列的整型值;
        2. getString 獲取指定列的字符串;
        3. getColumnIndex 得到指定列索引值;
        4. getCount 返回 Cursor 中的行數(shù);
        5. getPostion 返回當前 Cursor 的位置;
        6. getColumnName 根據(jù)列的索引值獲取列的名稱;
        7. getColumnNames 獲取 Cursor 所有列的名稱的數(shù)組;

SQLite的特點

  1. 輕量級數(shù)據(jù)庫;
  2. 遵守ACID關(guān)聯(lián)式的數(shù)據(jù)庫管理系統(tǒng);
  3. 用文件保存數(shù)據(jù),支持跨平臺;

數(shù)據(jù)庫開發(fā)流程

  1. 創(chuàng)建數(shù)據(jù)庫;
  2. 增刪查改數(shù)據(jù);

常用控件怎么用?(EditText, TextView, Button,RadioButton,RadioGroup …….)代碼怎么寫

  • EditText

    <EditText
      android:id="@+id/et_name"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:hint="請輸入您的用戶名"
      android:textSize="14dp" />
    
      EditText et_name = (EditText) findViewById(R.id.et_name);
      et_name.getText().toString().trim();
    
  • TextView

    <TextView 
      android:id="@+id/tv_name"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="用戶名: "
      android:textSize="20dp" />
    
    TextView tv_name = (TextView) findViewById(R.id.tv_name);
    tv_name.setText("用戶名: SPxiaomin");
    
  • Button

    <Button 
      android:id="@+id/btn_send"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content" 
      android:text="提交用戶信息" />
      
      Button btn_send = (Button) findViewById(R.id.btn_send);
    
  • RadioGroup & RadioButton

    <RadioGroup
      android:id="@+id/radioGroup"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:contentDescription="性別"
      android:orientation="horizontal">
      <RadioButton
        android:id="@+id/radioMale"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="true"
        android:text="男" />
      <RadioButton
        android:id="@+id/radioFemale"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="女" />
    </RadioGroup>
    
    RadioButton maleRadio = (RadioButton) findViewById(R.id.radioMale);
    maleRadio.isChecked();
    

ListView和Adapter

  • ListView: 一個以列表的形式展示具體數(shù)據(jù)內(nèi)容的控件。

    用人話說就是,類似于你手機qq中的聯(lián)系人列表。

  • Adapter: 對 ListView 進行數(shù)據(jù)適配。

    簡單說,就是 ListView 只是一個空箱子,Adapter 用來往箱子里面裝數(shù)據(jù)。

Log日志輸出,級別

  • 5個級別:

    1. Verbose: Log.v();
    2. Debug: Log.d();
    3. Info: Log.i();
    4. Warning: Log.w();
    5. Error: Log.e();

Activity生命周期7個方法

  1. onCreate(Bundle savedInstanceState):創(chuàng)建時執(zhí)行。
  2. onStart(): 可見時執(zhí)行。
  3. onRestart(): 回到前臺,再次可見時執(zhí)行。
  4. onResume(): 獲取焦點時執(zhí)行。
  5. onPause(): 失去焦點時執(zhí)行。
  6. onStop(): 用戶不可見進入后臺時執(zhí)行。
  7. onDestroy(): 銷毀時執(zhí)行。

Android中數(shù)據(jù)存儲的5種方式

  1. 文件存儲;
  2. SharedPreferences;
  3. SQLite 數(shù)據(jù)庫;
  4. ContentProvider;
  5. 網(wǎng)絡存儲;

有序廣播、無序廣播、有序廣播攔截、優(yōu)先級

  • 有序廣播

    1. 同步執(zhí)行;
    2. 同一時刻只會有一個廣播接受器能夠接受到這條信息,一個接一個的傳送;
    3. 可以被攔截;
  • 無序廣播:

    1. 異步執(zhí)行;
    2. 所有監(jiān)聽者幾乎同一時刻收到這條廣播;
    3. 無法被截斷;
  • 有序廣播攔截

    在有序廣播中,高優(yōu)先級的廣播接收器先接受到廣播,高優(yōu)先級的廣播接收器可以通過 abortBroadcast() 方法終止廣播,進而低優(yōu)先級的廣播接收器就收不到廣播。

  • 優(yōu)先級

    1. 在清單文件中注冊廣播接受者時定義 android:priority="",優(yōu)先級的范圍 -1000~1000 之間;
    2. 優(yōu)先級相同,先注冊的優(yōu)先;

服務的特點,及服務的啟動

  • 服務的特點:

    1. Activity 類似,但是沒有界面;
    2. 即使用戶切換到另一應用程序,服務仍可以在后臺運行,因此經(jīng)常被用來處理一些耗時的程序。
  • 服務的啟動

    1. start 方式啟動服務: startService、stopService;
    2. bind 方式啟動服務: bindService、unbindService;

    start 方式和 bind 方式的區(qū)別:bind 方式啟動服務的話,服務就可以和調(diào)用者進行方法調(diào)用和數(shù)據(jù)交互。

內(nèi)容提供者,短信備份的例子

書本,p157

Android中的權(quán)限 (讀通訊錄、讀短信、發(fā)短信、寫文件、打電話、聯(lián)網(wǎng)等)

AndroidManifest.xml 文件加上相應的權(quán)限配置就可以了

<uses-permission android:name="android.permission.READ_SMS" /> // 讀取短信

Android的安全性

  • 使用沙箱的概念來實現(xiàn)應用程序之間的分離和權(quán)限的限定;

  • 應用程序簽名;

    1. 識別代碼的作者;
    2. 檢測應用程序是否發(fā)生了改變;
    3. 在應用程序之間建立信任;
  • 應用程序權(quán)限;

    權(quán)限在安裝期間通過 manifest 文件由應用程序請求,由用戶授予或不授予。

  • 文件和內(nèi)容提供者權(quán)限。

附加內(nèi)容

  1. APK、ADT、AVD、ADB 的全稱

APK: android package,Android安裝包;
ADT: android development tool,Android 開發(fā)工具;
AVD: android virtual device,android 虛擬設(shè)備;
ADB: android debug bridge,android 調(diào)試橋;

  1. Activity 生命周期,點擊Back鍵時,Activity 依次經(jīng)歷了哪幾個事件?點擊 Home 鍵時,Activity 依次經(jīng)歷了哪幾個事件?

點擊 Back 鍵時,onPause -> onStop -> onDestroy -> onCreate -> onStart -> onResume;
點擊 Home 鍵時,onPause -> onStop -> onRestart -> onStart -> onResume;

  1. 分別舉例說明如何在 Java 代碼和布局 XML 文件中訪問存儲在 strings.xml 文件中的字符串資源?如何實現(xiàn)國際化的應用程序?

  2. 示例如下:

```
// strings.xml
<?xml version="1.0" encoding="utf-8" ?>
<resources>
  <string name="hello">Hello!</string>
</resources>

// 布局 XML 文件中
<TextView
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:text="@string/hello" />

// Java 代碼中
String string = getString(R.string.hello);
``` 
  1. 由于 Android 采用 XML 文件來管理資源文件,因此 Android 程序國際化只需要為資源文件提供不同語言國家或地區(qū)對應的內(nèi)容即可。

  2. 論述

  3. android 平臺的優(yōu)缺點?

優(yōu)點:

1. 開放性(允許任何移動終端廠商加入到 Android 聯(lián)盟中來);
2. 掙脫運營商的束縛(能夠更加方便的接入網(wǎng)絡,運營商的制約減少);
3. 豐富的硬件選擇(廠商眾多);
4. 不受制約的開發(fā)商(app有好的和不好的,血腥、暴力等不在少數(shù));

缺點:

1. 安全和隱私問題嚴重(個人痕跡等泄露嚴重);
2. 缺少標準;
  1. android vs ios
android 平臺

優(yōu)點:

1. 開發(fā)的優(yōu)點使得其發(fā)展迅速,社區(qū)非常強大;

缺點:  

1. 但是也是由于其開放性的原因,劣質(zhì)軟件如木馬軟件等數(shù)量不在少數(shù),用戶隱私被泄露嚴重;

ios 平臺

優(yōu)點

1. 非常好的用戶體驗;
2. 云服務強大,數(shù)據(jù)得以備份,并且具有追蹤設(shè)備功能;
3. app 只能夠到官方市場下載,使得應用安全可靠;

缺點

1. 封閉性帶來的安全保障同時也造成了一定的不方便,比如說收費 app 等;

// 疑惑

ppt 圖片插入,大小設(shè)置;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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

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