1.流量統計的原理
(1)作業系統配置設定每個應用程式一個固定的編号(id) (2)代碼
<span style="font-size:14px;">public class TrafficManagerActivity extends Activity{
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//1.擷取一個包管理器
PackageManager pm=context.getPackageManager();
//2.周遊手機作業系統獲得所有的應用程式的uid
List<ApplicationInfo> appliactaionInfos=pm.getInstalledApplications(0);
for(ApplicationInfo applicationInfo:applicationInfos){
int uid=applicationInfo.uid;
long tx=TrafficStats.getUidTxBytes(uid);//發送的上傳流量byte
long rx=TrafficStats.getUidRxBytes(uid);//發送的上傳流量byte
}
}</span>
2.sliding抽屜的簡單實作
(1)
TrafficStats.getMobileTxBytes();//擷取3G/2G網絡上傳總流量
TrafficStats.getMobileRxBytes();//手機2G/3G下載下傳的總流量
TrafficStats.getTotalTxBytes();//手機全部網絡接口,包括WiFi,3g,2g上傳的總流量
TrafficStats.getTotalRxBytes();//手機全部網絡接口,包括WiFi,3g,2g下載下傳的總流量
(2)隻能從下往上,從右往左滑動
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<!-- 抽屜的位置:orientation -->
<SlidingDrawer
android:id="@+id/mydraw"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:content="@+id/b"
android:handle="@+id/a"
android:orientation="vertical" >
<!-- 把手的布局,也可以為一個布局 -->
<ImageView
android:id="@id/a"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher" />
<!-- 内容的布局 -->
<LinearLayout
android:id="@id/b"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#22000000"
android:gravity="center" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="我是内容" />
</LinearLayout>
</SlidingDrawer>
</LinearLayout>
3.手機殺毒的原理
(1)布局雷達掃描動畫-----兩個圖檔重疊,讓上面的圖檔旋轉
6.橫豎屏切換的生命周期
(1)橫豎屏切換會銷毀原來的Activity (2)忽略橫豎屏切換 a.在Activity配置檔案中配置
<activity
android:configChanges="orientation|keyboardHidden|screenSize"
></activity>
7.利用反射擷取緩存和應用程式大小資訊
public class CleanCacheActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
initUI();
}
private void initUI() {
setContentView(R.layout.activity_clean_cache);
PackageManager packageManager = getPackageManager();
/**
* 接收2個參數
* 第一個參數接收一個包名
* 第二個參數接收aidl的對象
*/
// * @hide
// */
// public abstract void getPackageSizeInfo(String packageName,
// IPackageStatsObserver observer);
// packageManager.getPackageSizeInfo();
//安裝到手機上面所有的應用程式
List<PackageInfo> installedPackages = packageManager.getInstalledPackages(0);
for (PackageInfo packageInfo : installedPackages) {
getCacheSize(packageInfo);
}
}
private void getCacheSize(PackageInfo packageInfo) {
try {
Class<?> clazz = getClassLoader().loadClass("packageManager");
//通過反射擷取到目前的方法
Method method = clazz.getDeclaredMethod("getPackageSizeInfo", String.class,IPackageStatsObserver.class);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}