編輯:關於Android編程
這兩天工作比較忙,沒有時間更新博客。今天難得閒下來,總結一下之前寫的一個Demo,用到了兩個小知識點:一是使用Thread加Handler實現計時,二是控制屏幕喚醒不熄滅。
首先是計時,首先我使用單純的Handler來實現計時,代碼如下:
Handler handler = new Handler();
Runnable runnable = new Runnable() {
@Override
public void run() {
timeSec ++;
mTimeCount.setText("" + timeSec);
handler.postDelayed(this, 1000);
}
};new Thread(new TimeThread()).start();
final Handler handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
timeSec++;
if (timeSec < 60) { // 1分鐘以下情況
mTimeCount.setText("總耗時:" + timeSec + "秒");
} else if (timeSec < 3600) { // 1小時以下情況
int minutes = timeSec / 60;
int second = timeSec % 60;
mTimeCount.setText("總耗時:" + minutes + "分" + second + "秒");
} else {
int hours = timeSec / 3600;
int minutes = (timeSec - hours * 3600) / 60;
int second = timeSec % 60;
mTimeCount.setText("總耗時:" + hours + "時" + minutes + "分" + second + "秒");
}
}
super.handleMessage(msg);
}
};這樣UI在阻塞時,雖然我們的mTimeCount這個TextView沒有實時更新,但是計時函數還是在進行的,當UI線程的Thread.Sleep()結束時,就會更新。
下面看一下保持屏幕喚醒的邏輯:
private static PowerManager.WakeLock wakeLock;
public static void keepScreenOn(Context context, boolean on) {
if (on) {
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
wakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE, "==KeepScreenOn==");
wakeLock.acquire();
} else {
if (wakeLock != null) {
wakeLock.release();
wakeLock = null;
}
}
} @Override
protected void onDestroy() {
super.onDestroy();
keepScreenOn(Main.this, false);
}
Android Volley框架完全解析
2013年Google I/O大會上推出了一個新的網絡通信框架——Volley。Volley可是說是把AsyncHttpClient和Univer
Android開發中的Surface庫及用其制作播放器UI的例子
1、Surface1.1、 就如在C語言編程一樣,通過一個文件的句柄,就可以操作文件,獲取文件的內容。 同樣的,通過Surface就可以獲取raw buffer其中的內容
Android自定義View之可隨時暫停、開啟的圓形下載進度條
這是一個一言不合就手撸一個自定義View的任性時代,因此最近一段時間一直在學習自定義View相關的知識,也看了很多與此相關的博客,有句話叫做不要重復造輪子,別人寫好的直接
Android安全機制——操作系統安全機制-進程、用戶與文件安全
1.進程,線程2.多用戶,多用戶邊界(確定用戶可操作,訪問的資源,文件,可執行的操作)3.進程與文件都是用UID,GID來區分用戶,用rwx來區分操作,進程與文件通過ui