第一行代碼 閱讀筆記(5-9章)

  • 作者:Mr.Egg
  • 狀態:完成
  • 轉載請注明

一.第五章

(本章只理解了大概)

1.廣播機制

廣播分為標準廣播有序廣播
標準廣播直接分發到所有廣播接收器
有序廣播依次分發到各個接收器

二.第六章

1.將數據存入/取出文件

兩種模式MODE_PRIVATE(覆蓋 默認用此)MODE_APPEND(追加),其余兩種在4.2版被廢棄不做介紹。
注意:讀取權限的申請?這里沒提到,不過可能需要SD卡的讀取權限。

2.SharedPreferences

調用Activity中的getSharedPreferences("name",模式)方法獲取到SharedPreferences.Editor對象

通過設置 key , value 方式存儲鍵值對,最后調用apply方法保存。
同理于取,不做介紹。

3.SQLite

新建類繼承于SQLiteOpenHelper,在onCreate方法中新建表

onUpgrade方法中更新表,每次更新都會導致數據庫數據清除,通過傳入比之前更大的版本號自動調用onUpgrade方法。

添加數據
調用getWritableDatabase()方法獲取數據庫db
實例化ContentValues插入鍵值對后再調用db直接插入
其他不做介紹

同樣也可以直接使用sql語句操作數據庫
eg.db.execSQL("delete from xx where number > ?",new String[]{"500"});

4.LitePal 數據庫開源操作庫

(重點) 同樣的有GreenDao
首先導入庫,'org.litepal.android.core:1.3.2'
接著在main目錄下新建assets目錄下新建litepal.xml

<litepal>
        <dbname value = "name"></dbname>
        <version value = "1"></version>

        <list>
        </list>
<litepal>

接下來配置** AndroidManifest.xml** ,在application標簽下面的 android:name="org.litepal.LitePalApplication"

使用

首先,新建對應表的實體類(類--->表 一個類對應一張表)。
接著在litepal.xml中配置

<litepal>
        <dbname value = "name"></dbname>
        <version value = "1"></version>

        <list>
                <mapping class = "com.example.xxx.class"></mapping>
        </list>
<litepal>

eg.
創建數據庫 Connector.getDatabase()
插入數據

  Class xx = new Class();
  ....(設置數據)
  xx.save();

同理于其他 不予列舉

三.第七章

1.內容提供器

內容提供器是不同應用之間共享數據的渠道

2.Android權限機制

Android權限分為普通權限和危險權限,普通權限由系統之間授權,危險權限需要示意用戶是否給予權限。

四.第八章

本章講調用系統組件(相機,相冊等),未仔細閱讀。

五.第九章

注意本章要申請網絡權限

1.WebView使用方法

2.HTTP協議訪問

HTTP協議訪問網絡屬于底層實現,現在常用封裝好的庫來代替 ,但也必須了解。
首先,網絡屬于耗時操作,只能在子線程中運行
幾個主要的點

Url url = new Url("");
HttpConnection connection = new HttpConnection ();
connection .setRequestMethod("GET/POST");
connection .setConnectionTimeout(8000(ms));
connection .setReadTimeout(8000(ms));
InputStream in = connection.getInputStream();
BufferedReader reader = new BufferedReader( new InputStreamReader(in) );
//處理reader就可以了

3.使用OkHttp

okhttp是Square公司的開源網絡庫,類似的有Retrofit。
主要操作

OkHttpClient client = new OkHttpClient();//請求主體
Request request = new Request.Builder()  //request對象
              .url("url")
              .builder();
Response response = client.newCall(request).execute();    //發送請求

//-------------------------Post提交------------------------------------//
RequestBody requestBody = new FormBody.Builder()
                        .add("key","value")
                        .builder();
Request request = new Request.Builder()  
              .url("url")
              .post(requestBody )
              .builder();

4.解析XML

三種方式:Pull,SAX,DOM(此書未提及)

5.解析Json

多種方式,書上主要寫JSONObjectGSON還有一種常用的為FastJson
由于我習慣用Gson所以這里我稍微介紹下Gson。

用Gson解析Json首先要先根據Json構造對應的實體類,如果用Android Studio的話可以添加插件GsonFormat根據Json自動生成對應的實體類。

其次是用法

Class JsonClass = new Gson().fromJson(String,Class.class);

如果的List的話較為麻煩 (此處憑記憶打的可能有錯,具體請百度)

List<T> list = new Gson().fromJson(json,new TypeToken< List<T> >() {}.getType() );

完結撒花!!!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,466評論 25 708
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,981評論 19 139
  • 侄子四歲的時候,老媽會給他讀故事,有天她驚奇地跟我們說,我們寶貝太厲害了,所有封面上的字他都認識! 我跟嫂子將信將...
    OQ熊閱讀 168評論 0 0
  • 文/景風 第五十一風 7月21日 壞消息。 可我愛你。 沈小北。 第五十二風 7月23日 越是難過越沉默。愛的越深...
    景阿風閱讀 397評論 0 0
  • 有你才叫幸福,只要和你在一起什么都讓我幸福到死去。
    荊棘bq閱讀 177評論 0 1