原址:
android中使用activitymanager,以判斷在乙個應用中,或乙個service 、receiver中應用是否正在執行,以便進行一些相關的處理。
這個時候我們需要得到乙個activitymanager,這個manager顧名思意就是管理activity的,它有乙個方法叫getrunningtasks,可以得到當前系統正在執行的task的列表,**如下:
activitymanager am = (activitymanager)context.getsystemservice(context.activity_service);100表示取的最大的任務數,info.topactivity表示當前正在執行的activity,info.baseactivity表系統後台有此 程序在執行,具體要做如何判斷就看自已的業務需求。這個類還有更多的方法可以取得系統執行的服務、記憶體使用情況等的方法,請各位自行查詢。listlist = am.getrunningtasks(100
); for
(runningtaskinfo info : list)
}
有一點要注意,如果想正常執行此方法,請在你的 androidmanifest.xml 中加入:
<否則可能會有exception丟擲。uses-permission
android:name
="android.permission.get_tasks"
/>
//判斷應用是否在執行android系統內部狀態資訊的相關api:activitymanager am = (activitymanager)context.getsystemservice(context.activity_service);
listlist = am.getrunningtasks(100
); boolean
false
; string my_pkg_name = "com.cyberblue.iitag"
; for
(runningtaskinfo info : list)
} //執行中才去重啟藍芽,否則會導致安裝了這個應用後藍芽無法關閉
ifbluetoothadapter mbluetoothadapter = bluetoothadapter.getdefaultadapter();
if(!mbluetoothadapter.isenabled())
}
得到activitymanager :
activitymanager activitymanager = (activitymanager)這個位查到底是什麼資訊:this
.getsystemservice(activity_service)
configurationinfo configurationinfo = activitymanager.getdeviceconfigurationinfo();獲取程序記憶體狀態的資訊:
debug.memoryinfo processmemoryinfo = activitymanager.getprocessmemoryinfo(processids);獲取當前執行的service資訊:
listrunningserviceinfos = activitymanager.getrunningservices(maxvalue);獲取當前執行的任務資訊:
listrunningtaskinfos = activitymanager.getrunningtasks(maxvalue);其中runningtaskinfos 的 topactivity就是當前task的活躍activity
在getrunningtasks()所返回的task佇列中系統會根據這些task的活躍度有乙個排序,越活躍越是靠前。第乙個就是當前活動的task
/**最後在應用中新增所需的許可權:* 檢測某activityupdate是否在當前task的棧頂
*/public
boolean
istopactivy(string cmdname) if(
null
== cmpnametemp)
return
false
; return
cmpnametemp.equals(cmdname);
}
<uses-permission
android:name
="android.permission.get_tasks"
/>
/**get the launcher status */private
boolean
islauncherrunnig(context context)
}
}
}
return
result ;
}
privateandroid 取當前顯示的activity :listgetallthelauncher()
for(
inti=
0;i< ra.size();i++)
return
names;
}
activitymanager am = (activitymanager) getsystemservice(activity_service);android如何判斷程式是否在前台執行:componentname cn = am.getrunningtasks(1
).get(
0).topactivity;
log.d(""
, "pkg:"
+cn.getpackagename());
log.d(""
, "cls:"
+cn.getclassname());
privateboolean
istopactivity()
}
return
false
;
}
1 3 第乙個 Android 應用
對專案的名稱 儲存路徑 使用的語言等進行相關設定 company domain 公司網域名稱 package name 包名 根據公司網域名稱生成的 minimum sdk api 21 android 5.0 lollipop 最低版本sdk 專案中可能會用到的一些檔案 其中 mainativiy...
使用NDK c 建立乙個Android應用
新增path變數 j a home bin ndk home android sdk home platform tools ant home bin 開啟控制台,依次輸入 如果以上命令都是有效命令,安裝完成 右鍵單擊工程,android tools add native support,在彈出對話...
如何判斷乙個執行緒的存活
pthread kill 別被名字嚇到,pthread kill可不是kill,而是向執行緒傳送signal。還記得signal嗎,大部分signal的預設動作是終止程序的執行,所以,我們才要用signal 去抓訊號並加上處理函式。int pthread kill pthread t thread,...