手機衛士09_應用程序四種查看_ListView小標題_進程管理

手機衛士09_應用程序四種查看_ListView小標題_進程管理

1.懸浮窗體的功能實現:

1.1.應用程序的卸載: 包安裝器 packageInstall,包卸載packageruninstall

intent.setData(Uri.pare(“package:”?+ 應用程序包名))

卸載完之后記得更新list集合,更新適配器.

但是不確定用戶是否點了卸載,所以要通過廣播獲取消息.

并且需要通過代碼注冊,因為這個廣播只在應用管理生效.

要記得addDataSchme(“package”)

接收完廣播之后,更新了集合適配器,要記得關閉廣播

?

異常:ConcurrentModificationException,并發訪問異常錯誤

因為使用增強for循環去刪除集合中的元素,所以會出并發修改異常.

額外:系統應用是不允許卸載的,所以遍歷用戶應用集合就可以了.

?

1.2.應用程序的開啟:本質是打開這個應用的入口activity.

當一個activity的清單文件中,意圖過濾器有

<action ?android:name=”android.intent.action.MAIN”/>

<action ?android:name=”android.intent.category.LANUCHER”/>

//找關系,得到特性.

packageManager pm

Intent intent = pm.getLanuchIntentForPackage(包名)//如果對應的應用程序activity配置了上面的屬性,就返回這個前門activity,如果沒有activity配置這個屬性,就返回為null;

?

1.3.應用程序的分享功能:打開系統的短信,給好友發送信息(或者QQ,微信,微博之類)

市面上一些即時通訊,或者社交類的應用程序,都重寫了分享的action,如果是按發短信的方式分享,這些程序都會被列出來.

短信應用中,發短信的activity,ComposeMessageActivity,根據下面意圖過濾器的類型,可以發送不同的信息.有圖片,視頻,文字.

設置完intent的屬性,把要發送的文本放到intent.putExtra(intent.EXTRA_TEXT,.......);

?

1.4.應用程序的信息功能:實際上是打開系統的應用程序信息界面

setting的系統源碼中配置清單的InstalledAppDetails

如果不知道怎么寫意圖信息,就找一個類型的軟件,打開它這個功能,會在日志中出現.

Intent intent = new Intent(“android.setting.APPLICATION_DETATLS_SETTINGS”);

Intent.addCategory(intent.Category.DEFAULT)//設置默認的Category

intent.setData(Uri.parse(“package:”?+ 包名));

?

2.進程管理

2.1 ui界面標題參考布局

?

ActivityManager am 進程管理器

①通過進程管理器 獲取當前正在運行的進程.

am.getRunningAppProcesses()//返回當前運行的 APP集合

②獲取可用的內存空間

am.getMemoryInfo(MemoryInfo outinfo)//對參數保存內存信息概要,

outinfo.avaiMem(系統可用內存空間).tatalMem(系統全部的內存空間)

可用內存返回是Long類型,需要轉換成mb形式formatter

③創建一個新的信息獲取類(獲取信息的放在engine包下):ProcessInfoProvider

獲取所有進程信息的數據.(需要一個實體類保存信息)

參考方法名getRunningProcessInfos();

實體類名:ProcessInfo

需要保存的信息:應用程序名label,圖標icon,內存占用大小,應用程序包名packageName.

區分是否是用戶和系統進程(判斷是用戶程序還是系統程序即可);

//通過am得到正在運行應用程序的集合.

getRunningAppProcesses();//返回正在運行的應用程序的集合,

每一個對象info

info.importance //進程的優先級

Info.pid //進程id,進程的唯一標識

info.processName //進程名,實際上就是應用程序的包名

//其它信息就跟前面獲取軟件信息應用,拿到包名>>拿到包信息>>拿到想要的信息

PackageManager pm

pm.getPackageInfo(包名,0(附加可選標記))//返回一個包信息Packageinfo packinfo

Packinfo.applicationInfo.xxxx//對應的信息.

am.getProcessMemory(int[]{})//通過一個保存多個進程pid返回對應多個進程信息.

返回的進程信息.getTotalPrivateDirty()//返回的是kb,*1024轉換成byte方便計算.

?

最后把每個封裝對象放到List集合中,返回給調用者.

安卓系統中的進程有的不是app應用,system,多媒體,內核應用,音頻播放框架應用并不是由純java編寫的,還有c的構成,所以它們可能并沒有apk的名字.

//在通過getPakcagerInfo獲取包信息的時候,如果是這些進程就會出異常,根據這一點在Catch代碼塊中,給它設置一個名稱(packname)和默認圖片.

item條目參考ui

?

④其它類似應用程序管理器,拆分小集合,增加提醒小條目.holder優化,復用convert對象等.

?

3 帶勾選框ListView的處理

?

List中如果有Button,Check這一類搶焦點的控件,會把焦點從條目上搶走,這樣會導致ListView的條目點擊事件效果失效,一般在開發中把這些搶焦點的控件CLickable = “false”,focusable=”false”

不可被點擊,也不會獲取到焦點

給進程應用對象封裝類增加一個checkbox的布爾變量,用來判斷是否被選中了(也可以保存在一個集合中,但是用戶會希望這些被勾選的應用,再以后也能被默認勾選,所以封裝起來比較方便)

?

在ListView的點擊事件中,lv.getItemPosition(position);//得到被點擊的條目對象.

//返回的對象為null

因為自定義適配器時,getItem()方法返回為null,所以獲取的值也為null

所以可以在這個方法里返回被點擊的對象.

?

在點擊事件中,獲取到這個對象,同時獲取到CheckBox對象,點擊之后就設置對應的參數.

但是會出現復用歷史緩存的bug,在這里就需要在holder里增加一個checkbox變量,在適配器返回view的時候,對這個 checkBox進行賦值.

?

4,進程管理的進程清理

點擊按鈕之后清理進程.

①循環遍歷集合,判斷進程是否被選中.

②通過進程管理器 ActivityManager.killBackgroundProcesses(包名);

//清理完之后需要刷新界面,重新獲取數據

③需要權限:KILL_BACKGROUND_PROCES

?

5,進程管理的細節

①全選和反選:

全選:遍歷集合.全部設置為true,通知數據適配器更新數據

反選:遍歷集合,全部設置為原來的狀態取反,然后更新數據.

?

額外:無法清除的進程,系統進程,系統ui進程,前臺進程,killBackgroundProcess是清理后臺進程.

在開發者看來能理解,但是用戶不能理解.

②一鍵清理的清理效果,

只要全部清理,就把所有進程在界面的顯示給清理掉(傻逼用戶)(市面上360的欺騙效果是比較好的,它甚至會判斷你最近的清理時間,如果太近的話,就直接提示為空)

一鍵清理完后,把用戶勾選的條目給移除掉(保存在一個集合Kill中,方便最后Toast中顯示)

?

Toast:清理了kill.size()個進程,釋放了Kill中元素占用內存相加之和.

更改標題,運行中進程和內存數量兩個參數.可以通過兩個成員變量去保存它們

然后把這兩個參數與上面移除集合中的數據相減即可(減去進程數和占用內存總數).

?

從界面上移除條目,遍歷kill集合,判斷是屬于哪個集合的,就從哪個集合去移除它,然后更新適配器.

額外:按常理來說,清理進程不應該清除自身應用的進程.

判斷如果返回的View為自身應用的時候(根據包名判斷),就隱藏checkBox勾選框.

點擊事件里,也要做判斷,如果符合就直接終止,return掉事件.全選,反選也是一樣,跳過特殊選項.

?

wanandroid.com //安卓知識點總結

?

posted on 2016-06-18 22:58 抓根寶 閱讀(...) 評論(...) 編輯 收藏

轉載于:https://www.cnblogs.com/adventurer/p/5597115.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/395729.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/395729.shtml
英文地址,請注明出處:http://en.pswp.cn/news/395729.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

pandas:根據行間差值進行數據合并

1. 問題描述 在處理用戶上網數據時&#xff0c;用戶的上網行為數據之間存在時間間隔&#xff0c;按照實際情況&#xff0c;若時間間隔小于閾值&#xff08;next_access_time_app&#xff09;&#xff0c;則可把這幾條上網行為合并為一條行為數據&#xff1b;若時間間隔大于閾值…

Flask學習 一 基本結構

-from flask import Flaskfrom flask import Flask,render_template-from flask import request-from flask import make_response-from flask import abort-from flask import redirect-# __name__參數決定程序的根目錄app Flask (__name__)-# app.route (/)-# def hello_wor…

java8的路徑_什么是路徑?

# 什么是路徑&#xff1f;文件系統以某種形式的媒體(通常為一個或多個硬盤驅動器)存儲和組織文件&#xff0c;使得它們可以容易地被檢索。目前使用的大多數文件系統將文件存儲在樹形(或分層)結構中。在樹的頂部是一個(或多個)根節點。在根節點下&#xff0c;有文件和目錄(Micro…

為什么toString方法可以用來區分數組和對象?

首先大家都應該知道在javascript中只有是對象都存在toString方法&#xff0c;將調用該方法的值轉換為字符串返回&#xff0c;如下&#xff1a; var arr [1, 2, 3];console.log(arr.toString()); //1,2,3 但對象的toString方法和其他優點不同&#xff0c;其返回的是類似 [objec…

平安 開源 數據庫 實踐_刻意的實踐-成為開源

平安 開源 數據庫 實踐by Anthony Ng由Anthony Ng 刻意的實踐-成為開源 (Deliberate Practice — Becoming an Open Sourcerer) I recently finished reading Cal Newport’s book, So Good They Can’t Ignore You. It’s a quick read, and it introduced me to the concept…

更新Composer依賴報錯處理Fatal error: Declaration of Fxp\Composer\AssetPlugin\Repository\AbstractAssetsRe...

更新Composer依賴報錯處理 Fatal error: Declaration of Fxp\Composer\AssetPlugin\Repository\AbstractAssetsRepository::search() must be compatible with Composer\Repository\RepositoryInterface::search($query, $mode 0, $type NULL) in C:\Users\Arthur\AppData\Ro…

解析su,su -,sudo的區別

2019獨角獸企業重金招聘Python工程師標準>>> 本人以前一直習慣直接使用root&#xff0c;很少使用su&#xff0c;前幾天才發現su與su -命令是有著本質區別的&#xff01; 大部分Linux發行版的默認賬戶是普通用戶&#xff0c;而更改系統文件或者執行某些命令&#xff…

java 前置通知_spring aop中的前置通知

fixassetServicemyInterceptormyInterceptor2在上面的配置文件中 我配置了兩個interceptor &#xff0c;這兩個interceptor的invoke方法中的邏輯是一樣的。public Object invoke(MethodInvocation invo) throws Throwable {//自己的橫切邏輯log....invo.proceed()}我想請教的問…

Java并發編程藝術讀書筆記

1、多線程在CPU切換過程中&#xff0c;由于需要保存線程之前狀態和加載新線程狀態&#xff0c;成為上下文切換&#xff0c;上下文切換會造成消耗系統內存。所以&#xff0c;可合理控制線程數量。 如何控制&#xff1a; &#xff08;1&#xff09;使用ps -ef|grep appname&#…

您可能不需要翻譯您JavaScript

by Alex Ewerlf由AlexEwerlf 您可能不需要翻譯您JavaScript (You might not need to transpile your JavaScript) Popular guides like YouMightNotNeedJQuery.com and You Don’t Need Lodash/Underscore have challenged common industry practices.諸如YouMightNotNeedJQue…

java maven 操作 收集的一些命令

maven打包&#xff1a; mvn clean package -Dmaven.test.skiptrue 運行jar: java -jar target/spring-boot-scheduler-1.0.0.jar 這種方式關掉控制臺就不可以訪問&#xff0c;現在要后臺運行的方式啟動 nohup java -jar target/spring-boot-scheduler-1.0.0.jar & 清理并…

手機h5 java平臺_H5 手機 App 開發入門:技術篇

1、手機 App 的技術棧手機 App 的技術棧可以分成三類原生 App 技術棧原生技術棧指的是&#xff0c;只能用于特定手機平臺的開發技術。比如&#xff0c;安卓平臺的 Java 技術棧&#xff0c;iOS 平臺的 Object-C 技術棧或 Swift 技術棧。混合 App 技術棧混合技術棧指的是開發混合…

《Java程序設計》學期總結

《Java程序設計》 學期總結 課程設計小組 -迦瓦棧隊 團隊博客 讀書筆記匯總第一周第二周第三周第四周第五周第六周第七周第八周第九周第十周 實驗報告匯總實驗一實驗二實驗三實驗四實驗五 代碼托管鏈接GitOSC 課程收獲與不足 上了一學期的課&#xff0c;收獲當然后很多&#xf…

012-- mysql的分區和分表

分區 分區就是把一個數據表的文件和索引分散存儲在不同的物理文件中。 mysql支持的分區類型包括Range、List、Hash、Key&#xff0c;其中Range比較常用&#xff1a; RANGE分區&#xff1a;基于屬于一個給定連續區間的列值&#xff0c;把多行分配給分區。 LIST分區&#xff1a;類…

中科大計算機專業少實習_為什么很少有計算機科學專業的人?

中科大計算機專業少實習Hong Kong-based technology writer Dan Wang wrote a blog post exploring why so few people get degrees in computer science. And yes — it’s far fewer people than those who study other science and engineering fields.駐香港的技術作家王丹…

java犯的小錯誤_[Java教程]十個JavaScript中易犯的小錯誤,你中了幾槍?

[Java教程]十個JavaScript中易犯的小錯誤&#xff0c;你中了幾槍&#xff1f;0 2015-06-01 12:00:19序言在今天&#xff0c;JavaScript已經成為了網頁編輯的核心。尤其是過去的幾年&#xff0c;互聯網見證了在SPA開發、圖形處理、交互等方面大量JS庫的出現。如果初次打交道&…

Kali滲透測試——利用metasploit攻擊靶機WinXP SP1

搭建滲透測試環境 Kali攻擊機 WinXP SP1 靶機 啟動metasploit 跟windows RPC相關的漏洞 內部提供的漏洞攻擊 靶機winxp sp1網絡配置 查看虛擬機的NAT網段 配置WinXP SP1靶機的IP地址 執行漏洞利用 后漏洞利用&#xff1a;meterpreter> 靶機的信息 進程情況 查看到explorer.e…

創建響應式布局的優秀網格工具集錦《系列五》

在這篇文章中&#xff0c;我們為您呈現了一組優秀的網格工具清單。如果網頁設計和開人員采用了正確的工具集&#xff0c;并基于一個靈活的網格架構&#xff0c;以及能夠把響應圖像應用到到設計之中&#xff0c;那么創建一個具備響應式的網站并不一定是一項艱巨的任務。enjoy! 您…

【iOS - 周總結】開發中遇到的小知識點(2018.12.10-2018.12.15)

1.WKWebview加載html文本圖片過大&#xff0c;沒有自適應屏幕寬高。 在用Webview加載html文本有時候會遇到加載的圖片過大&#xff0c;不能自適應屏幕寬高的問題。那么如何解決這個問題&#xff1f;如何使圖片自適應屏幕&#xff1f;很簡單&#xff0c;只需要加一個js就可以。 …

如何使用Create React App DevOps自動化工作中所有無聊的部分

by James Y Rauhut詹姆士魯豪(James Y Rauhut) 如何使用Create React App DevOps自動化工作中所有無聊的部分 (How I automate all of the boring parts of my job with Create React App DevOps) When you have responsibilities as one of the only designers — and possib…