Android 中的线程处理长时间运行的进程

2023-12-03

好吧,这是我的问题。我想学习 AsyncTask、Threading 和 Handler 来处理长时间运行的任务。我使用了 Android Cook Book 和 New Boston Android 教程,但我无法使其工作。

我需要更改进度条消息。这不是为了项目,而是为了学习线程。线程对我来说真的很难。因此,如果您有任何了解线程的教程或指南,请告诉我。

同时我尝试了 Handler 类,但它不起作用。所以我尝试了AsyncTask。但它也不起作用。

这是我的代码。

package com.example.androidpopup;

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {

    Button click_btn;
    ProgressDialog dialog;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        click_btn = (Button) findViewById(R.id.button1);

        click_btn.setOnClickListener(new OnClickListener() {

            public void onClick(View arg0) {
                dialog = ProgressDialog.show(MainActivity.this, "",
                        "Recording...", true);
                dialog.setCancelable(true);
                Thread thread = new Thread(){
                    public void run(){
                        try{
                            sleep(2000);
                            new UpdateUI().execute("testing");
                        }catch(InterruptedException e){
                            e.printStackTrace();
                        }
                    }
                };
            }
        });
    }

    public class UpdateUI extends AsyncTask<String, Integer, String>{

        @Override
        protected String doInBackground(String... params) {
            // TODO Auto-generated method stub
            return "Searching";
        }

        protected void onPreExecute(String f){
            //example of setting up something
            f = "whatever";
        }

        protected void onProgressUpdate(Integer...progress){

        }

        protected void onPostExecute(String result){
            dialog.setMessage(result);
        }

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

如果有人能解释我的方法有什么问题,那将会非常有帮助。

谢谢你!


为什么你创建一个新线程只是为了等待 2 秒来调用 AsyncTask?我建议您删除该线程,通常调用 AsyncTask 并在其中放置 Thread.sleep(....)。

就像是:

protected void onPreExecute(String f){
     Thread.sleep(2000);
     //example of setting up something
     f = "whatever";
}

PS:为了运行一个线程,你需要调用thread.start。 ;)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 中的线程处理长时间运行的进程 的相关文章

随机推荐

  • 如何强制 DataGridView 重绘?

    我有一个使用 BindingSource 的 DataGridView 这个BindingSource指向一个只读属性 它是一个集合department对象 当我以编程方式向属性添加部门时 我无法让 DataGridView 重绘自身并显示
  • 在 OS X 上安装 pyglfw

    我想为Python安装glow 所以我运行了 pip3 install glfw 但是当我尝试在代码中导入 glfw 时 我收到这样的错误 Traceback most recent call last File
  • 从没有润滑的日期减去 1 年

    我在数据库中有一个数据框 其中包含我使用 RPostgres 提取的日期维度 每个 日期 的格式为 YYYY MM DD 我想添加一个新的日期列 标记为 lookback date 该日期比初始日期早一年 需要明确的是 如果观察的 日期 是
  • 在Java 8中如何从N个数字中找到最大的M个数字?

    IntStream 可能是最简单的方法 但我只能选取最小的 M 个数字 如下所示 public class Test private static final int arr 5 3 4 2 9 1 7 8 6 public static
  • PHP 加密数据,Bash 解密

    我正在尝试想出一种让 PHP 加密文件的方法 我曾经只使用 PHP 系统调用来运行对文件进行编码的脚本 bin sh usr bin openssl aes 256 cbc a salt k 1 in 2 参数 1 是要使用的密码 参数 2
  • 如何读取多个 Excel 文件并将它们连接到一个 Apache Spark DataFrame 中?

    最近我想做 Spark Summit 2016 的 Spark Machine Learning Lab 培训视频是here并且可以导出笔记本here 实验室使用的数据集可以从以下网址下载UCI 机器学习存储库 它包含来自燃气发电厂中各种传
  • git 是否将更改后的大文件完全上传到远程,或者只上传差异?

    假设我有一个很大的文本文件 并且它的某些部分会定期更改 我想让它与 git 服务器上的远程版本保持同步 最好只上传其更改的部分 git 的默认行为是什么 git 每次更改文件时都会上传整个文件吗 或者可以选择仅上传差异 非文本 二进制 文件
  • 将指南视为模拟器选择的一部分

    当我必须选择一个模拟器来在 Xcode 6 1 1 中运行我的应用程序时 我在模拟器名称旁边看到一个指南 例如我看到的选择是 iPad 2 062B5AD7 65CD 4079 B06E 182A6D110DB4 iPad 2 49DA93
  • jQuery Mobile 自动分隔符格式不正确 - 使用热毛巾视图

    我试图让我的清单看起来像this 但它看起来像这样 我已经复制了直接来自 jQuery 移动网站的代码 ul li a href index html Adam Kinkaid a li li a href index html Alex
  • 纱线工作区中的 React Native 不解析外部包

    我正在使用纱线工作区来创建 monoreporeact and react native 我尝试添加redux to app common它工作得很好react 但它没有在本地解析 您可以在以下位置查看来源https github com
  • 坚持使用 JPA 会使嵌套对象的数据库外键字段为空

    我有结构表 orders id bigint 20 amount bigint 20 order details id bigint 20 payment type varchar 255 order fk bigint 20 实体 MyO
  • 如何解决 Eclipse 中的 multidex 错误

    我正在开发一个应用程序 在该应用程序中我使用了太多的库 最近我将 mixpanel lib 添加到我的项目中 之后就构建成功了 但是当我尝试运行该应用程序时 出现错误 2015 11 06 15 04 54 Dex Loader 无法执行
  • 弱小的自己去哪儿了?

    我经常这样做 let when DispatchTime now 2 0 DispatchQueue main asyncAfter deadline when beep 在一个应用程序中我们经常这样做 tickle fresh msg i
  • 在父方法中访问子方法的静态属性

    假设我有以下代码 class Parent static string MyField ParentField public virtual string DoSomething return MyField class Child Par
  • 如何从csv文件中读取自定义格式的日期?

    我正在解析一个 csv 文件 其数据为 03 10 2016 18 00 00 2 6 当我阅读文件创建架构时 如下所示 StructType schema DataTypes createStructType Arrays asList
  • 如何在 rglplot3d 中绘制曲面

    所以我有这段代码可以产生精确的表面 f function x y z x 2 3 y 2 exp x 2 y 2 plot3d f col colorRampPalette c blue white xlab X ylab Y zlab Z
  • C# 将日期时间转换为特定格式

    我想将日期时间转换为指定格式 Wed Aug 01 2012 14 37 50 GMT 0530 India Standard Time 实际上我想在网页上使用 Jquery 显示计时器 所以我尝试了一些我知道的格式 并找到了一些来自htt
  • 稀疏向量之和:缺陷还是特征?

    我最近在 MATLAB R2022a 中偶然发现了以下行为 gt gt a sparse 1 2 1 a 1 2 1 gt gt b sparse 2 1 18 b 2 1 18 gt gt a b ans 2 1 18 1 2 1 2 2
  • 如何将额外意图传递给两项活动

    我有一个应用程序 在第一个活动中询问第二页上的人名 它在句子中显示该名称我想在第三个第四或第九个活动中使用该名称我如何正确声明它 公开 并调用它我何时何地需要它 这是我发送的代码 Main public class MainActivity
  • Android 中的线程处理长时间运行的进程

    好吧 这是我的问题 我想学习 AsyncTask Threading 和 Handler 来处理长时间运行的任务 我使用了 Android Cook Book 和 New Boston Android 教程 但我无法使其工作 我需要更改进度