每日一練 20190526

1.如何刪除SQLite中表的個別字段android

參考回答:

    SQLite數據庫只容許增長字段而不容許修改和刪除表字段,只能建立新表保留原有字段,刪除原表

 2.使用SQLite時會有哪些優化操做?數據庫

參考回答:

使用事務作批量操做
及時關閉Cursor,避免內存泄露
耗時操做異步化:數據庫的操做屬於本地IO耗時操做,建議放入異步線程中處理
ContentValues的容量調整:ContentValues內部採用HashMap來存儲Key-Value數據,ContentValues初始容量爲8,擴容時翻倍。所以建議對ContentValues填入的內容進行估量,設置合理的初始化容量,減小沒必要要的內部擴容操做
使用索引加快檢索速度:對於查詢操做量級較大、業務對查詢要求較高的推薦使用索引

 3.Android中進程和線程的關係? 區別?微信

參考回答:

線程是CPU調度的最小單元,同時線程是一種有限的系統資源
進程通常指一個執行單元,在PC和移動設備上一個程序或則一個應用
通常來講,一個App程序至少有一個進程,一個進程至少有一個線程(包含與被包含的關係),
通俗來說就是,在App這個工廠裏面有一個進程,線程就是裏面的生產線,但主線程(主生產線)只有一條,而子線程(副生產線)能夠有多個
進程有本身獨立的地址空間,而進程中的線程共享此地址空間,均可以併發執行

 4.如何開啓多進程 ? 應用是否能夠開啓N個進程 ?併發

參考回答:

    在AndroidMenifest中給四大組件指定屬性android:process開啓多進程模式
    在內存容許的條件下能夠開啓N個進程

 5.爲什麼須要IPC?多進程通訊可能會出現的問題?異步

參考回答:

全部運行在不一樣進程的四大組件(Activity、Service、Receiver、ContentProvider)共享數據都會失敗,這是因爲Android爲每一個應用分配了獨立的虛擬機,不一樣的虛擬機在內存分配上有不一樣的地址空間,這會致使在不一樣的虛擬機中訪問同一個類的對象會產生多份副本。好比經常使用例子(經過開啓多進程獲取更大內存空間、兩個或則多個應用之間共享數據、微信全家桶)
通常來講,使用多進程通訊會形成以下幾方面的問題

靜態成員和單例模式徹底失效:獨立的虛擬機形成
線程同步機制徹底實效:獨立的虛擬機形成
SharedPreferences的可靠性降低:這是由於Sp不支持兩個進程併發進行讀寫,有必定概率致使數據丟失
Application會屢次建立:Android系統在建立新的進程會分配獨立的虛擬機,因此這個過程其實就是啓動一個應用的過程,天然也會建立新的Application
相關文章
相關標籤/搜索