android異步處理AsyncTask

相信不少攻城獅覺得另開一個類寫線程肯定覺得特別麻煩 代碼也繁瑣 畢竟不能寫在主線程中 主線程只用來刷新一些ui頁面 但AsyncTask就不同了 可以寫在主線程中 不會造成程序崩潰 是谷歌為了解決Thread復(fù)雜麻煩出了一個解決方案? 這里我就簡單講兩個例子


主要是理解才可以靈活應(yīng)用 我這里先講一個數(shù)字增長從0到100使用到AsyncTask線程后臺運行 為了顯示出效果使用到線程休眠 這里先部署一下包的布局和xml 文件

第一個為功能清單 一些權(quán)限sdk等在這里設(shè)置

MainActivity是我第一個講的內(nèi)容ReadText 讀取設(shè)備存儲的一個txt文件 ReadInt 是讀取網(wǎng)路數(shù)據(jù)的一個java

圖片發(fā)自簡書App
圖片發(fā)自簡書App

然后看一下我的xml 代碼 我這里選的線性布局 你可以根據(jù)愛好和每個布局的特色來設(shè)計布局 這里我就寫了兩個控件 TextView和Button 我為了方便沒把文字寫到數(shù)組中 根據(jù)需要自己去添加

圖片發(fā)自簡書App

然后來看我的java文件 先照顧一下一些小白吧 第一行為你的包名

import 是調(diào)用api文件 以第一個為例 調(diào)用 安卓包下的APP的activity

然后公開的class 繼承于Activity

簡單的聲明控件 格式為private 控件總稱 你想定義的名字

這里是activity的生命周期onCreate返回一個保存過的緩存數(shù)據(jù) 具體生命周期建議去谷歌官網(wǎng)查看

設(shè)置上下文示圖 res下的布局的布局id

綁定控件id 和按鈕設(shè)置監(jiān)聽 按鈕設(shè)置點擊監(jiān)聽建議使用這個 不建議使用xml中指明點擊監(jiān)聽 在一些手機可能會出問題

在這里我設(shè)置了按鈕點擊后就不可以再點擊了 設(shè)置Enabled 為假

調(diào)用我的MyTask方法 下面會寫出來具體的實現(xiàn)

圖片發(fā)自簡書App

這里具體寫了一個MyTask 繼承于AsyncTask 如果你要設(shè)置其他的類可以訪問可以添加public公開private自身包訪問 protected只有這個方法才可以訪問

首先寫出來這個方法 必須生成一個方法 叫doInBackground后臺運行的方法 你可以右擊生成方法 或者點紅色感嘆號自動補全代碼實現(xiàn)方法

onPreExecute準備工作做的事情 我加了一個設(shè)置文本用來提示用戶正在加載

然后后臺運行的工作是數(shù)字自增加 注意 一定不要把ui刷新寫在這里 否則會崩潰

圖片發(fā)自簡書App

加入一個線程 防止自增長過快 看不出來效果

用try 方法包圍

最后無法實行的結(jié)果 返回一個空值

進展更新調(diào)用的方法 定義int類型的值 文本設(shè)置得到的數(shù)字

圖片發(fā)自簡書App

最后進程結(jié)束的工作 進程完成自動調(diào)用這個方法 我寫了兩個提示 一個Toast一個文本改成執(zhí)行完畢

圖片發(fā)自簡書App

效果圖就不示范了 本人確保代碼可以正確運行 有不懂的可以來問我

下面開始講第二個示例 來獲取手機存儲設(shè)備的一個txt文件 建議自己寫一個文件來實踐 直接放到手機存儲中即可 你也可以使用完畢刪除他 我的文件名叫做testText.txt

1同樣先來示例我的布局截圖自己xml代碼

圖片發(fā)自簡書App

這里加了一個按鈕用來讀取文件 然后還有一個ProgressBar用來顯示進度 EditText用來顯示獲取的文件


圖片發(fā)自簡書App

前面已經(jīng)講過這個了 這里就不多講了

圖片發(fā)自簡書App

按鈕點擊監(jiān)聽實現(xiàn)指明路徑 開啟一個新的AsyncTask 注意括號里的代碼 路徑 整數(shù) string數(shù)組

注意需要指明路徑的正確位置 環(huán)境 得到存儲設(shè)備 文件名

下面調(diào)用的方法也已經(jīng)講過 有不明白的去上面看一下

圖片發(fā)自簡書App

主要是在自己寫這個讀的方法 得到數(shù)組 初始化 為了提示用戶得到數(shù)據(jù)寫了兩個長度來給進度條顯示進程

緩沖讀取器的初始化

下面嘗試讀取文件 初始化緩沖讀取器 輸出流讀取 路徑輸出讀取 路徑名字file 前面已經(jīng)定義過路徑的地址 編碼格式為GBK 可以根據(jù)自己情況而定 得到緩沖讀取器中的讀取行

圖片發(fā)自簡書App

需要判斷文件中是否有行內(nèi)容 當(dāng)不為空執(zhí)行查詢 stringBuilder動態(tài)數(shù)組添加獲取到的內(nèi)容加換行符號 讀取長度疊加等于文件得到字節(jié)的長度 定義一個int值用來公布匯報進程 同樣休眠0.1秒 行等于緩沖讀取器的讀取行 返回數(shù)組 下面是防止找不到文件 或已經(jīng)讀取完畢等意外情況的優(yōu)化 自動生成代碼


圖片發(fā)自簡書App

最后 嘗試如果緩沖讀取器不為空值 需要關(guān)閉緩沖讀取器 否則內(nèi)存泄露 會影響用戶體驗的性能 否則出問題返回空值 思路要嚴謹

線程更新的時候?qū)⒌玫降拈L度解析設(shè)置到進度條上顯示

最容易忽略的一步 在功能清單上注冊讀取內(nèi)存卡的權(quán)限

圖片發(fā)自簡書App

到這里我們的優(yōu)化講解就已經(jīng)講完了 我把所有用到的數(shù)據(jù)都公布在這里了 如果還有不懂的 點個小心心送給小編 不給我也可以講述 不給就是小編講的不夠完美嘛

這么晚了 我也要洗洗睡了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末瓢对,一起剝皮案震驚了整個濱河市糕珊,隨后出現(xiàn)的幾起案子旨枯,更是在濱河造成了極大的恐慌,老刑警劉巖沙绝,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件伟件,死亡現(xiàn)場離奇詭異润梯,居然都是意外死亡垫卤,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門齿兔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來橱脸,“玉大人,你說我怎么就攤上這事分苇√硭撸” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵医寿,是天一觀的道長栏赴。 經(jīng)常有香客問我,道長靖秩,這世上最難降的妖魔是什么须眷? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮沟突,結(jié)果婚禮上花颗,老公的妹妹穿的比我還像新娘。我一直安慰自己惠拭,他們只是感情好扩劝,可當(dāng)我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著职辅,像睡著了一般棒呛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上域携,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天簇秒,我揣著相機與錄音,去河邊找鬼秀鞭。 笑死趋观,一個胖子當(dāng)著我的面吹牛扛禽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播拆内,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼旋圆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了麸恍?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤搀矫,失蹤者是張志新(化名)和其女友劉穎抹沪,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瓤球,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡融欧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了卦羡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片噪馏。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖绿饵,靈堂內(nèi)的尸體忽然破棺而出欠肾,到底是詐尸還是另有隱情,我是刑警寧澤拟赊,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布刺桃,位于F島的核電站,受9級特大地震影響吸祟,放射性物質(zhì)發(fā)生泄漏瑟慈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一屋匕、第九天 我趴在偏房一處隱蔽的房頂上張望葛碧。 院中可真熱鬧,春花似錦过吻、人聲如沸进泼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缘琅。三九已至,卻和暖如春廓推,著一層夾襖步出監(jiān)牢的瞬間刷袍,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工樊展, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留呻纹,地道東北人堆生。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像雷酪,于是被迫代替她去往敵國和親淑仆。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容