1、簡述android中實現多執行緒的幾種方法,及各自的優缺點
多執行緒實現方式implements runnable 或 extends thread
1)activity.runonuithread(runnable)
2)view.post(runnable) ;view.postdelay(runnable , long)
3)handler
4)asynctask:
asynctask
優點:1.簡單,快捷,只需要在doinbackground ()中處理業務,在onpostexecute()方法中更新ui,**層次結構簡單
2.當相同非同步任務的資料特別龐大,asynctask這種執行緒池結構的優勢會充分體現出來
缺點:1.asynctask類包含乙個全域性靜態的執行緒池,預設配置了5個可用執行緒,如果超過5個執行緒則會進入到緩衝佇列中等待。緩衝佇列最多有128個等中的執行緒
2.asynctask可能存在新開大量執行緒消耗系統資源和導致應用fc(force close)的風險
3.asynctask在處理大量多種不同非同步任務的時候顯得不適合。
handler
優點:handler原理是僅僅就是傳送了乙個訊息佇列,並沒有新開執行緒帶來的資源消耗,對於紛繁複雜的不同小非同步任務處理起來相對簡單。
缺點:相對asynctask來說顯得**過多,過於臃腫,結構過於複雜,層次不明朗
2、簡述android下的定時器有哪些實現方法
android定時器實現
一、採用handler與執行緒的sleep(long)方法;
二、採用handler的postdelayed(runnable, long)方法;
三、採用handler與timer及timertask結合的方法;
方法一:handler 子執行緒呼叫handler的sendmessage(message)傳送事件。
方法二:view.post(runnable )
方法三:activity.runonuithread(runnable )
方法四:asynctask
1、基於訊息的通訊機制 intent---bundle,extra
2、利用static靜態資料,public static 成員變數
3、 基於外部儲存的傳輸
4、基於ipc通訊機制
4、android中activity的啟動模式分為哪幾種?
activity啟動模式的設定在androidmanifest.xml檔案中,通過配置activity的屬性android:launchmode=""設定。
1. standard模式(預設)
2. singletop模式
3. singletask模式
4. singleinstance模式
5、請簡述android的生命週期,在什麼情況下轉換,以及各階段需要什麼樣的處理?
oncreate: 建立介面 ,資料 的初始化
onstart: 使用者可見不可互動的
onresume: 使用者可互動
onpause: 可見但不可互動的
onstop: 變得不可見
ondestroy: activity銷毀
6、請實現乙個方法將一億以內的數字程式設計漢語數字,比如:將51040轉變成:"伍萬壹仟零肆拾" 方法原型為:string convertint2chinese(int num)
public class numbertocn ;
/*** 漢語中貨幣單位大寫,這樣的設計類似於佔位符
*/private static final string cn_upper_monetray_unit = ;
/*** 特殊字元:整
*/private static final string cn_full = "整";
/*** 特殊字元:負
*/private static final string cn_negative = "負";
/*** 金額的精度,預設值為2
*/private static final int money_precision = 2;
/*** 特殊字元:零元整
*/private static final string cn_zeor_full = "零元" + cn_full;
/*** 把輸入的金額轉換為漢語中人民幣的大寫
* * @param numberofmoney
* 輸入的金額
* @return 對應的漢語大寫
*/public static string number2cnmontrayunit(bigdecimal numberofmoney)
//這裡會進行金額的四捨五入
long number = numberofmoney.movepointright(money_precision)
.setscale(0, 4).abs().longvalue();
// 得到小數點後兩位值
long scale = number % 100;
int numunit = 0;
int numindex = 0;
boolean getzero = false;
// 判斷最後兩位數,一共有四中情況:00 = 0, 01 = 1, 10, 11
if (!(scale > 0))
if ((scale > 0) && (!(scale % 10 > 0)))
int zerosize = 0;
while (true)
// 每次獲取到最後乙個數
numunit = (int) (number % 10);
if (numunit > 0)
if ((numindex == 13) && (zerosize >= 3))
sb.insert(0, cn_upper_monetray_unit[numindex]);
sb.insert(0, cn_upper_number[numunit]);
getzero = false;
zerosize = 0;
} else
if (numindex == 2)
} else if (((numindex - 2) % 4 == 0) && (number % 1000 > 0))
getzero = true;
}// 讓number每次都去掉最後乙個數
number = number / 10;
++numindex;
}// 如果signum == -1,則說明輸入的數字為負數,就在最前面追加特殊字元:負
if (signum == -1)
// 輸入的數字小數點後兩位為"00"的情況,則要在最後追加特殊字元:整
if (!(scale > 0))
return sb.tostring();
}public static void main(string args)
}
7、實現乙個支援大量資料的listview的adapter,每行有2個testview,顯示name和value,資料型別自選。
8、選擇題:關於contentvalues類說法正確的是
和hashtable比較類似,它也是負責儲存一些名值對,但是它儲存的名值對當中的名是乙個string型別,而值都是基本型別。
最近遇到的面試題關於android方面
1.有一種數字叫做回文數字,如121,12321這種對稱的數字,試編寫乙個方法來判斷乙個數字是否是回文數字,如果是回文數字,輸出 true 不是輸出 false public string test string str else 2.請說出執行緒與程序的區別 答 執行緒是在程序裡面的,而每個應用程...
網上遇到的面試題
題目 寫乙個方法,要求引數int型別,如 傳入乙個12345,返回結果54321。面試的時候遇到這個題,還有個要求,是方法體內的 不能超過8行,而且還要用遞迴。public static void main string args public static int f int i,int j 題目...
android面試題二
六 android 中的動畫有哪幾種,它們的特點和區別是什麼 逐幀動畫和補間動畫。補間動畫 給出兩個關鍵幀 初和末 和變化時間 方式,通過一些演算法對view的內容在規定的時間內完成一系列的圖形變換。主要包括四種效果 alpha scale translate和rotate。七 請介紹下 andro...