手機衛士11_ 自訂控制項_緩衝清理_病毒庫更新

來源:互聯網
上載者:User

標籤:

拷貝安卓源碼中的邏輯,可以考慮先建立一個小項目實現以下效果

1,病毒資料庫的自動更新(串連網路,然後擷取特徵碼儲存到資料庫?)

①工程師發現病毒apk,擷取到它的特徵碼發布到伺服器上

通過 MD5 或者ASH1擷取特徵碼

②用戶端殺毒軟體下載特徵碼(可能是 JSON串)到本地用戶端

(在開啟軟體的時候還是開啟查殺介面的時候?其實都不適合,應該開啟一個服務去定期更新資料庫,訪問病毒更新特徵碼地址)

定期更新,timer和timertask,一般一個小時更新一次(測試的時候寫短一點)

串連伺服器:Url對象,擷取連結HttpUrlConnection,設定逾時時間,請求方式,

擷取響應碼,判斷結果,最後轉換輸入流為字串.轉換成json對象

③本地用戶端解析特徵碼,然後儲存至資料庫,最後查殺病毒.

解析伺服器的病毒庫版本,擷取本地病毒庫的版本(對應的表).

如果不一致,就添加新的病毒條目到本地,並且更新版本.

額外:①添加條目的時候記得查看DDL資料模式定義,語言查看錶結構

②如果要更新資料庫條目和版本,記得開啟資料庫事務,保持一致性.

db.beginTransaction();//開始資料庫事務

db.beginTransactionSuccessful();//事務執行成功

db.endTransaction()//結束事務,寫在 finally裡.

③要記得開啟服務,放在splash裡開啟即可.(要判斷病毒資料庫是否存在)

 

額外:檢測惡意APP還有:檔案檢驗,行為分析等,很多查殺病毒方式.

 

2,橫豎屏切換的生命週期

2.1橫豎屏切換的時候介面重新建立activity,解決方式:

①固定橫豎屏.

②不讓activity重建.

 

2.2 自訂控制項的顯示樣式:

尋找源碼>>styles樣式檔案,找到想要查看的顯示樣式

根據不同的樣式節點,查看對應的xml樣式檔案.

進度條實際上有三層,一個背景,兩個進度(大進度,小進度,參考播放器進度)

//不想寫就拷貝源碼中的檔案,修改參數即可,把進度背景改成想顯示的圖片(要替換的話,三個背景圖片最好都替換掉)即可.

要注意對應的屬性名稱,不要搞錯了,不然不生效。

參考背景設定xml資源

<?xml version="1.0" encoding="utf-8"?>

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">   

<item  android:id="@android:id/background" android:drawable="@drawable/progress_bg">

    </item>

<itemandroid:id="@android:id/secondaryProgress"android:drawable="@drawable/security_progress"> </item>

 <itemandroid:id="@android:id/progress"  android:drawable="@drawable/security_progress">

    </item>  

</layer-list>

 

3, 緩衝清理功能

3.1 ui

①緩衝清理,SD卡清理,痕迹清理(暫時不用)三個選項卡,使用Fragment片段介面.

②主介面ui參考:

記得給這讓兩個小選項卡的背景變換(表示一個被選中,一個沒選中.參考home介面的條目小背景,一個透明的邊框線)

點擊一個選項卡之後,還要記得切換它們的表徵圖資源(醒目的和不醒目的圖片,文本顏色也可以修改掉,更好看一些,嗎?)記得改布局的預設顏色,不然第一次開啟顏色還是黑色.

③Fragment包,存放所有片段檔案(考慮向下相容,使用v4包)

建立類繼承Fragment,重寫onCreate,返回的View 代表這個片段配置樣式.

配置樣式:暫無,寫一個TextView的文本標記一下即可.

擷取上下文:getActivity();

在Activity中

點擊事件:建立Fragment 繼承類對象.

擷取支援FragementManager.beginxXX再擷取事務.

然後ft.replace(id,對象);最後ft.commit();

額外:一開始指定一個幀布局,在開啟功能頁面的時候就能顯示它.

 

3.2 清理緩衝的功能

什麼是緩衝:臨時檔案的的儲存,當系統資源不足的時候 會回收緩衝空間

①在緩衝的Fragment裡,掃描所有應用程式的緩衝目錄,如何??

尋找源碼(看看安卓自己是怎麼做的):

在設定介面的應用程式可以看到每個應用程式的緩衝內容,通過這一點去找到系統源碼的setting源碼,

如果直接把setting源碼匯入工程,會報錯,因為它是在架構下進行編譯的,依賴架構裡的api,而工程裡缺少很多系統底層開發的api,所以會報錯。

查詢源碼:尋找特定字元,根據特定字元去尋找源碼,ctrl+H搜尋

一致追尋到擷取緩衝資訊的代碼.packageStats api

 

②代碼擷取快取資料

PackagerManage pm

pm.getPackageSizeInfo();擷取包大小資訊,但是這個方法被隱藏了.

通過反射擷取到這個方法//擷取位元組碼對象,擷取到所有方法

//其它自己探索

額外:注意許可權問題

 

3.3 Fragment ui布局:(可以用ListView 也可以直接用LinearLayout填充空白資料)

 

②在Fragment 的onStart()方法編寫擷取所有應用程式的緩衝

//擷取所有包資訊,根據包名,利用反射擷取緩衝資訊.

③記得更新介面ui,掃描進度,掃描的文本,

判斷是否存在緩衝,存在緩衝就把有緩衝的訊息(有緩衝的AppLiaction和緩衝大小,可以考慮建立一個對象去封裝這些資訊)發給主線程

要讓條目點擊發生狀態改變,設定背景資源狀態選取器

顯示緩衝的ui最佳化:參考ui.

 

 

4清除某一個程式的緩衝資訊

4.1

查看系統源碼setting中清楚緩衝的按鈕點擊事件中的代碼邏輯

pm.deleteAppliCationCacheFile()//也是被隱藏的,通過反射去調用它

額外:注意許可權異常。但是這個許可權只能給系統app使用,所以這個邏輯無法實現

解決方式:曲線救國,使用者如果點擊了單個應用的清除緩衝,就跳過setting的詳細頁面,讓使用者自己去實現這個清除功能。

 

4.2 BUG 如果到別的頁面再返回清理緩衝介面,舊資料和新資料都顯示在頁面上。

在onStart()//介面可見的時候,添加一條邏輯,每次可見就清空一次布局中的子控制項

ll.reamoveAllViews();

 

5,清除全部緩衝:安卓系統的漏洞:讓系統發送廣播,硬碟空間不夠用,系統回收緩衝。

實現方法:發送一個訊息給作業系統,我要申請一個非常大的空間。就會回收緩衝了。

實現步驟①:增加一個新按鈕

②找到這個控制項,點擊的時候申請一個非常大的空間

PackageManager>>freeStorageAndNotify(申請空間,觀察者介面);

//申請一個可用空間,觀察者返回的是最大可申請空間(能返回多少返回多少)

這是一個隱藏的api

申請的空間,integer.MaxValue//2G,2的31次方 為2G

許可權:CLEAR_APP_CACHE//安卓的漏洞,Google沒有檢查這個許可權的使用app(system).

 

額外:清楚完緩衝之後,清楚掉下面所有的子控制項,從而更新介面顯示。

 

6.SD卡清理:

掃描SD卡中的檔案(遞迴遍曆SD卡檔案夾,篩選常見快取檔案拓展名.tmp.temp)

把遍曆出來的快取檔案顯示在介面上,使用者可以手動清空所有檔案(刪除掉).

額外:市面上的清理SD卡還會根據一個資料庫(儲存市面上常見APP的緩衝目錄)來判斷這個快取檔案屬於哪一個APP來提示使用者,提高使用者體驗

 

 

 

手機衛士11_ 自訂控制項_緩衝清理_病毒庫更新

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.