关于AsyncTask的理解
来源:互联网 发布:财经数据日历 编辑:程序博客网 时间:2024/05/21 08:45
package com..asynctaskdemo;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.SystemClock;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
public class MainActivity extends Activity {
private static final String TAG = MainActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 执行异步任务
new MyAsyncTask().execute("http://www.baidu.com");
}
// 第一个泛型就是doInBackground的参数类型, 也是execute方法的参数类型
// 第二个泛型是onProgressUpdate的参数类型, 也是publishProgress方法的参数类型
// 第三个泛型是doInBackground的返回值类型, 也是onPostExecute方法的参数类型
private class MyAsyncTask extends AsyncTask<String, Integer, String> {
private ProgressDialog mPd;
// 在doInBackground方法之前调用, 这个方法在主线程中
@Override
protected void onPreExecute() {
super.onPreExecute();
// 可以做一些准备工作
Log.i(TAG, "onPreExecute: " + Thread.currentThread().getName());
mPd = new ProgressDialog(MainActivity.this);
mPd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
mPd.setMax(5);
mPd.show();
}
// 在后台(子线程)做一些事情, 可以在这个方法里做耗时操作
@Override
protected String doInBackground(String... params) {
// SystemClock.sleep(1000);
Log.i(TAG, "doInBackground: " + Thread.currentThread().getName());
String param = params[0];
Log.i(TAG, param);//"http://www.baidu.com"
for (int i = 0; i < 5; i++) {
// 发布进度
publishProgress(i);
SystemClock.sleep(300);
}
return "成功";
}
// 当调用了publishProgress后, 这个方法会被调用, 这个方法在主线程中
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
mPd.setProgress(values[0]);
}
// 当doInBackground方法执行完之后调用, 这个方法在主线程中
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
Log.i(TAG, "onPostExecute: " + Thread.currentThread().getName());
Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT).show();
mPd.dismiss();
}
}
}
package com..asynctaskdemo;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.SystemClock;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
public class MainActivity extends Activity {
private static final String TAG = MainActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 执行异步任务
new MyAsyncTask().execute("http://www.baidu.com");
}
// 第一个泛型就是doInBackground的参数类型, 也是execute方法的参数类型
// 第二个泛型是onProgressUpdate的参数类型, 也是publishProgress方法的参数类型
// 第三个泛型是doInBackground的返回值类型, 也是onPostExecute方法的参数类型
private class MyAsyncTask extends AsyncTask<String, Integer, String> {
private ProgressDialog mPd;
// 在doInBackground方法之前调用, 这个方法在主线程中
@Override
protected void onPreExecute() {
super.onPreExecute();
// 可以做一些准备工作
Log.i(TAG, "onPreExecute: " + Thread.currentThread().getName());
mPd = new ProgressDialog(MainActivity.this);
mPd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
mPd.setMax(5);
mPd.show();
}
// 在后台(子线程)做一些事情, 可以在这个方法里做耗时操作
@Override
protected String doInBackground(String... params) {
// SystemClock.sleep(1000);
Log.i(TAG, "doInBackground: " + Thread.currentThread().getName());
String param = params[0];
Log.i(TAG, param);//"http://www.baidu.com"
for (int i = 0; i < 5; i++) {
// 发布进度
publishProgress(i);
SystemClock.sleep(300);
}
return "成功";
}
// 当调用了publishProgress后, 这个方法会被调用, 这个方法在主线程中
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
mPd.setProgress(values[0]);
}
// 当doInBackground方法执行完之后调用, 这个方法在主线程中
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
Log.i(TAG, "onPostExecute: " + Thread.currentThread().getName());
Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT).show();
mPd.dismiss();
}
}
}
0 0
- 关于AsyncTask的理解
- 关于AsyncTask-异步任务的简单理解
- 关于AsyncTask的执行序理解
- 关于loader asyncTaskLoader AsyncTask的理解
- 关于AsyncTask<Params, Progress, Result>中三个参数的理解
- 理解Android的AsyncTask
- Android AsyncTask的理解
- AsyncTask源码的理解
- AsyncTask的理解
- AsyncTask的使用&&理解
- 关于AsyncTask的注意事项
- 关于android的AsyncTask。
- 关于AsyncTask的使用
- android AsyncTask的参数理解
- android AsyncTask的参数理解
- AsyncTask的理解(一)
- AsyncTask的使用方法和理解
- android AsyncTask的参数理解
- 2016.07.14回顾
- NSNotification的使用
- VS2008找不到头文件
- spring技术框架基础知识一反射
- 公司项目架构的演变过程
- 关于AsyncTask的理解
- 移动应用产品设计的十条经验分享
- eclipse常用快捷键
- 正则表达式 - 贪婪与非贪婪(惰性)
- Js各种正则表达试验
- KJFrameForAndroid 资料——KJActivity
- Android java 安装下载链接
- 欢迎使用CSDN-markdown编辑器
- 返回顶部-右侧fixed+内容宽度自适应