實現該功能的過程,前提是您能在eclipse下創建簡單android項目。若是您未作過任何的android開發就可能看起來比較吃力了。下面我將開發的代碼分塊粘貼出來,以供你們參考: java
1.整個項目的架構 android
這個應該很清楚了,就很少說什麼了。 架構
2.MainActivity.java 的內容 app
package com.android_test; eclipse
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
//import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast; 異步
/**
* 一個使用AsyncTask實現簡單異步刷新的功能。
* 功能介紹:用一個按鈕觸發事件,用TextView來顯示textview值的變化
* @author acebing
*
*/
public class MainActivity extends Activity {
private TextView mTextView; // 用來顯示變化的值
private Button mButton; // 事件觸發按鈕
// private ProgressBar mProgressBar;
private GetCSDNLogoTask task;
@Override
public void onCreate(Bundle savedInstanceState) { ide
super.onCreate(savedInstanceState); ui
setContentView(R.layout.activity_main);
mTextView = (TextView) findViewById(R.id.textview);
mButton = (Button) findViewById(R.id.button);
mButton.setText("開始");
// mProgressBar = (ProgressBar) findViewById(R.id.progressBar);
mButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
task = new GetCSDNLogoTask();
// 觸發異步事件,並初始化參數爲0
task.execute(0);
}
});
}
/**
* 此方法是在按回退鍵的時候中止後臺任務
*/
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
task.cancel(true);
} this
/**
* 繼承AsyncTask 三種泛型類型 Params,Progress和Result。
* Params :啓動任務是的輸入參數
* Progress:任務運行的進度值
* Result: 任務運行結束要返回的參數
*
*
* 運行改程序能夠經過LOG日誌查看該類中三個方法被調用的次數和順序
*/
class GetCSDNLogoTask extends AsyncTask<Integer, Integer, Integer> {
/**
*該方法 處理後臺執行的任務,在後臺線程執行。
*該方法處理一些耗時的操做,在該方法中不能進行UI組建的更新
*/
@Override
protected Integer doInBackground(Integer... params) {
Log.d("syso", "doInBackground");
publishProgress(0); // 將會調用onProgressUpdate(Integer... progress)方法
do {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 判斷若是task已經cancel就沒有必須繼續進行下面的操做
params[0] += 10;
publishProgress(params[0]);
} while (params[0] < 100);
return params[0];
}
/**
* 在調用publishProgress以後被調用,在ui線程執行.
* publishProgress 觸發一次,則該方法被調用一次。
* 在此方法中能夠進行UI組件的更新。
* 例如給textview組件設置值等
*/
protected void onProgressUpdate(Integer... progress) {
Log.d("syso", "onProgressUpdate");
// mProgressBar.setProgress(progress[0]);// 更新進度條的進度
mTextView.setText(progress[0].toString());
Log.d("syso", progress[0].toString()); .net
}
/**
* 該方法是後臺任務執行完以後被調用,在ui線程執行
* 能夠進行UI組件更新,
* 而且該組件只返回最後一次結果,一次任務也只調用一次
*/
protected void onPostExecute(Integer result) {
Log.d("syso", "onPostExecute");
if (result != null) {
Toast.makeText(MainActivity.this, "成功", Toast.LENGTH_LONG)
.show();
} else {
Toast.makeText(MainActivity.this, "失敗", Toast.LENGTH_LONG)
.show();
}
}
/**
*若是activity實現了 onDestroy方法,在按回退鍵後此方法執行,並任務中止。
*若是沒有實現onDestroy方法,在按回退鍵後此方法不執行而且後臺任務繼續直到任務自動結束。
*/
@Override
protected void onCancelled() {
// TODO Auto-generated method stub
super.onCancelled();
Log.d("syso", "task 取消");
}
}
}
3 .activity_main.xml 配置
下面配置中<!-- <ProgressBar -->
<!-- android:id="@+id/progressBar" -->
<!-- android:layout_width="wrap_content" -->
<!-- android:layout_height="wrap_content" -->
<!-- android:visibility="gone" -->
<!-- /> -->
上邊這一段配置是註釋掉的,不起做用的,能夠刪除
<?xml version="1.0" encoding="utf-8" ?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<!-- <ProgressBar -->
<!-- android:id="@+id/progressBar" -->
<!-- android:layout_width="wrap_content" -->
<!-- android:layout_height="wrap_content" -->
<!-- android:visibility="gone" -->
<!-- /> -->
</LinearLayout>
4.AndroidManifest.xml 配置
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android_test"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="15" />
<!-- 下面這一行是上網權限的配置,在這個程序中能夠省去 -->
<uses-permission android:name="android.permission.INTERNET" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
5 。效果(界面有點搓,你們見諒)
部署好項目後啓動,看到啓動後的效果是一個開始按鈕,點擊開始按鈕能夠顯示一個textview上值從0,步長爲10每隔1秒的遞增,直到100,而後彈出成功的提示。
6.源碼地址:http://www.oschina.net/code/snippet_867782_15488
全部配置及代碼都已貼完,以上小項目是使用android4.0.3平臺編譯的。固然也徹底能夠在其餘的平臺上編譯。