摘要:使用Android系統的AsynTask異步處理機制,可以很好地解決在移動應用中,由于帶寬有限和數據量爆增所帶來的問題,極大的提高了應用的可操作性,豐富了用戶的使用體驗。
關鍵詞:Android;異步機制;移動投票
中圖分類號:TP391 文獻標識碼:A 文章編號:1674-7712 (2012) 06-0093-01
在省級項目《吉林地區大學生網絡應用狀況的研究與對策》的調研過程中,發現在大學生中,智能手機的應用已經相當普遍。智能手機以其功能強大豐富和小巧易攜等優點,已經超越了簡單通訊工具的范疇,很多學生通過智能手機進行溝通交流、學習和娛樂,智能手機已經成為廣大學生的不可或缺的貼身伴侶。在對學生的網絡應用狀況進行調查的時候,項目組認識到通過手機進行調查,將能夠更加方便的讓學生進行投票,也能夠更加容易的獲得調查結果,因此項目組決定嘗試開發基于Android智能手機的移動投票系統,作為最新的數據統計渠道。
Android系統的市場占有率達70%以上,在大學生中更是首選,基于Android系統的移動投票系統,基本可以覆蓋大部分的學生。為了避免因為移動網絡帶寬有限,而導致大量學生同時投票時,出現網絡訪問不暢、無法投票和無法實時查看投票結果的情況,應在投票系統中采用異步處理機制,以保證投票的實時性和準確性。在Android中提供了專門的AsynTask類進行異步處理,Asyntask機制簡單易用,它將所有的線程通信都封裝成回調函數,調用邏輯清晰,尤其是在異步處理結束之后,有回調函數進行收尾處理,方便進行結果的統計和輸出。本文將通過實例對Android系統的AsynTask類的一部處理機制進行深入分析,以便更好的應用于移動投票系統。
一、AsynTask類的結構
AsynTask類直接繼承自java.lang.object類,主要用到的幾個內部回調函數有:doInBackGround()、onPreExecute()、onPostExecute()和onProgressUpdate(),正是這幾個回調函數構成了AsynTask類的使用邏輯結構。
二、回調邏輯關系
1.主線程調用AsynTask子類實例的execute()方法后,首先會調用onPreExecute()方法。
2.之后啟動新線程,調用doInBackground()方法,進行異步數據處理。
3.處理完畢之后異步線程結束,在主線程中調用onPostExecute()方法。
三、各個函數間數據的傳遞
其數據傳遞關系如下:
由execute()方法向doInBackground()傳遞,doInBackground()方法的返回值會傳遞給onPostExecute()方法。publishProgress()方法向progressUpdate()方法傳遞。
傳遞的數據的類型應該為數組,數組都是可變長的,應根據具體情況使用。
四、AsynTask機制的java實現代碼
public class AnsyTestActivity extends Activity {
TextView text =1;
Button button=1;
String str=1;
AnsyTry anys=1;
double result=0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
text=(TextView) findViewById(R.id.text);
button=(Button) findViewById(R.id.button);
str=\"wei\";
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
anys=new AnsyTry(text);
anys.execute(str); } }); }
class AnsyTry extends AsyncTask
TextView te=1;
public AnsyTry(TextView te) {
super();
this.te = te; }
@Override
protected Double doInBackground(String... params) {
double dou=0;
if(params[0].equals(\"wei\")){
System.out.println(Thread.currentThread().getName()+\"recive wei\");
dou=100; }
publishProgress(te);
return dou; } }}
通過AsynTask異步機制的應用,移動投票系統在應用中表現良好。在接受學生集中投票和實時統計分析的數據高峰期,AsynTask異步機制很好的將投票和查看統計結果的功能,分配給不同的線程,從而避免了網絡堵塞情況的發生,保證了投票數據的及時性和準確性。
參考文獻
[1]楊豐盛.Android應用開發揭秘[M].北京:機械工業出版社
[2]何孟翰.Google Android SDK開發實戰演練[M].北京:人民郵電出版社