zoukankan      html  css  js  c++  java
  • Android中的AsyncTask异步任务的简单实例

    在 Android中的AsyncTask异步任务的简介 一文中。已经对 安卓 异步任务操作做了简单的介绍。这里,直接将上文中的异步任务做了一个实例。实现异步操作更新UI线程,相比开启子线程更新来说逻辑性更加合理 下面内容。可直接拷贝到项目中继而运行測试 activity_main.xml
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >
    
    <ProgressBar
    android:id="@+id/progressBar"
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginTop="58dp" />
    
    <TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/button1"
    android:layout_below="@+id/progressBar"
    android:layout_marginTop="18dp"
    android:text="TextView" />
    
    <Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/textView1"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="16dp"
    android:text="Button" />
    
    </RelativeLayout>
    MainActivity.java
    package com.example.asynctaskdemo;
    
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.app.Activity;
    import android.view.Menu;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.ProgressBar;
    import android.widget.TextView;
    
    public class MainActivity extends Activity {
    private TextView tv;
    private ProgressBar progressBar;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    
    Button btn = (Button) findViewById(R.id.button1);
    btn.setOnClickListener(new OnClickListener() {
    
    @Override
    public void onClick(View v) {
    // TODO Auto-generated method stub
    TestAsyncTask testAsyncTask = new TestAsyncTask();
    testAsyncTask.execute(100);
    }
    });
    tv = (TextView) findViewById(R.id.textView1);
    progressBar = (ProgressBar) findViewById(R.id.progressBar);
    }
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
    }
    
    /*
    * @TestAsyncTaskInteger 參数Integer 进度String 返回值 类型
    */
    class TestAsyncTask extends AsyncTask<Integer, Integer, String> {
    
    @Override
    protected void onPreExecute() {
    // 第一个运行方法
    super.onPreExecute();
    }
    
    @Override
    protected String doInBackground(Integer... params) {
    // 第二个运行方法,onPreExecute()运行完后运行
    for (int i = 0; i <= 100; i++) {
    progressBar.setProgress(i);
    publishProgress(i);
    try {
    Thread.sleep(params[0]);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    return "运行完成";
    }
    
    @Override
    protected void onProgressUpdate(Integer... progress) {
    // 这个函数在doInBackground调用publishProgress时触发。尽管调用时仅仅有一个參数
    // 可是这里取到的是一个数组,所以要用progesss[0]来取值
    // 第n个參数就用progress[n]来取值
    tv.setText(progress[0] + "%");
    super.onProgressUpdate(progress);
    }
    
    @Override
    protected void onPostExecute(String result) {
    // doInBackground返回时触发。换句话说。就是doInBackground运行完后触发
    // 这里的result就是上面doInBackground运行后的返回值,所以这里是"运行完成"
    setTitle(result);
    super.onPostExecute(result);
    }
    
    }
    }
    对于各參数及各方法的介绍使用。均已在凝视中解释,关于很多其它 安卓 方面的开法 可加Q群 104725817 讨论
  • 相关阅读:
    sqlserver 脚本生成数据库文档
    在命令行中执行kms命令激活Microsoft Office 2010
    .NET Core项目修改project.json来引用其他目录下的源码等文件的办法 & 解决多框架时 project.json 与 app.config冲突的问题
    asp.net 访问局域网共享文件
    Winform开发框架的重要特性总结
    Winform开发框架之插件化应用框架实现
    Winform开发框架之权限管理系统的改进
    Winform开发框架之统计图表的实现
    在Winform开发框架中实现对数据库的加密支持
    Winform开发框架之通用高级查询模块
  • 原文地址:https://www.cnblogs.com/mthoutai/p/7050266.html
Copyright © 2011-2022 走看看