Android中AsyncTask异步加载
来源:互联网 发布:java可以javac不可以 编辑:程序博客网 时间:2024/05/17 02:28
AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程.
使用的优点:
l 简单,快捷
l 过程可控
在复杂的数据更新时,建议使用Handler。。下面是一个简单的例子:
.xml文件:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:context="com.example.administrator.asynctaskjson.MainActivity" tools:showIn="@layout/activity_main"> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="AsyncTaskClick" android:text="AsyncTask异步加载json数据" /> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:id="@+id/resulttext" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="这里是接收到的数据内容" /> </LinearLayout></LinearLayout>
MainActivity.java
import android.os.AsyncTask;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends AppCompatActivity { private TextView resulttext; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); resulttext = (TextView) this.findViewById(R.id.resulttext); } /** * 异步加载数据的实现 * * @param v */ public void AsyncTaskClick(View v) { new MyAsyncTask().execute(); } /** * 注意:1、在doInBackground方法中的参数类型必须和onPostExecute方法中的参数类型相同(在此处设置的为String类型) * 2、doInBackground方法的返回值和onPostExecute方法中的参数类型相同,onPostExecute方法中的参数就是doInBackground方法中的返回值 * 3、在doInBackground方法中,属于子线程,不能访问UI线程中的组件 */ class MyAsyncTask extends AsyncTask<String, Integer, String> { //在请求发起前触发的事件方法,一般做一些初始化的工作 // 在这里提示一下开始请求数据 @Override protected void onPreExecute() { Toast.makeText(MainActivity.this, "开始请求", Toast.LENGTH_SHORT).show(); super.onPreExecute(); } //在这里实现一些耗时的操作,比如请求网络数据,这里模拟请求到的数据 @Override protected String doInBackground(String... params) { return "我是请求到的数据"; } //请求结束后触发的事件方法,做一些更新UI,解析数据的操作。 @Override protected void onPostExecute(String result) { resulttext.setText(result); Toast.makeText(MainActivity.this, "请求完成", Toast.LENGTH_SHORT).show(); super.onPostExecute(result); } }}
0 0
- Android中AsyncTask异步加载
- Android中使用AsyncTask实现异步加载
- Android AsyncTask异步加载
- Android 异步加载图片-AsyncTask
- Android 异步加载图片-AsyncTask
- Android--AsyncTask异步加载详解
- Android 异步加载数据 AsyncTask
- android 异步加载解决方案 AsyncTask
- Android异步加载AsyncTask详解
- Android之AsyncTask异步加载
- Android异步加载AsyncTask详解
- Android异步加载AsyncTask详解
- Android异步加载之AsyncTask
- android中异步加载类AsyncTask的使用
- 慕课网:Android异步加载AsyncTask项目实战中
- Android中异步加载数据(二)AsyncTask异步更新界面
- Android异步加载数据 AsyncTask demo application
- (Android Studio)AsyncTask异步加载实现计数器
- [工具]如何访问Google-戏说VPN及路由VPN分流
- Poj 2406 Power Strings
- Oracle创建临时表空间/表空间/创建用户/授权
- Java集合框架List,Map,Set等全面介绍
- qq红包一键生成软件 v4.0 绿色版
- Android中AsyncTask异步加载
- pku线段树20题(mark)
- 浅析编程不同输入法状态下的些微区别
- Proguard使用最新,最全教程,亲自试验
- UI控件
- 《从零开始学Swift》学习笔记(Day 68)——Cocoa Touch设计模式及应用之响应者链与触摸事件
- 栈的简单实现
- 关于在VS中运行带有参数的控制台程序
- 从登陆框看前端(转)