package cn.infogiga.starter;
import android.os.asynctask;
import android.util.log;
/** * @author chroya
* */
public class mythreads extends asynctask{
@override
protected integer doinbackground(integer... params) {
int p = 0; //計數
for(int index=0; indexmythreads繼承了asynctask,他有三個泛型引數,第乙個是任務執行所需要的引數型別,第二個是任務的進度表示型別,第三個是進度計算的結果型別。
我override了三個方法:
doinbackground:就是任務執行的主方法,它會被作為乙個執行緒執行。
onprogressupdate:進度更新的時候呼叫,進度什麼時候更新呢?就是呼叫了publishprogress方法之後就更新。
onpostexecute:在doinbackground執行並返回之後呼叫,因為他需要doinbackground的返回值做引數。
怎麼使用它呢?
new mythreads().execute(10, 20, 30);
沒錯,就這一句。
這一句傳遞了三個引數進去,傳遞給了
doinbackground,然後執行緒開始執行,將三個數開始逐一計數,雖然計數不用這麼麻煩,但是為了弄明白asynctask的執行機制,複雜點反而好。
結果列印出
onprogressupdate的
1到60,最後列印出了
onpostexecute的result:60.
Android開發中立即停止AsyncTask和
程式開發中經常會有立即停止執行緒執行的需要,而通過api是沒有辦法實現這個目的的,因此對於這個情況,我們需要採取一些 特殊 的方式來實現 1,判斷標誌位的辦法 2,合理的利用exception 從外部呼叫asynctask的cancel方法並不能停止乙個已經啟動的asynctask。這個cancel...
Android中用Shape實現圓角和區域性圓角
通過以上 設定成布局的background即可實現布局四個角均為圓角.一般情況下上面就可以滿足我們的需求,那麼如果我們不想它四個角都為圓角該怎麼辦?注 可能android studio 預覽效果還是4個圓角,但實際執行是滿足的,畢竟是官方文件給出的解決方案 對,沒錯,就是多了一行android ra...
Android中用到的幾大設計模式
1 模板模式 如activity,每次新建乙個activity時都會覆蓋oncreate onstart 方法等,這些方法在父類中就相當於乙個模板。2 觀察者模式 listener相當於乙個觀察者,對一些事件的響應都進項觀察,當發現有響應就進行相應的處理。3 單例模式 目的 希望物件只建立乙個例項,...