实现该功能的过程,前提是您能在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平台编译的。固然也彻底能够在其余的平台上编译。