package com.example.wang.myapplication;

import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast; public class ZuoyeActivity4 extends AppCompatActivity { Button bt_1;
Button bt_2; TextView tv_1; Handler h=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg); if (msg.what==1)
{
tv_1.setText("拷贝完成");
}
else if(msg.what==2)
{
tv_1.setText("");
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_zuoye4); bt_1=(Button)findViewById(R.id.bt_1);
bt_1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final ProgressDialog progressDialog=new ProgressDialog(ZuoyeActivity4.this); progressDialog.setTitle("拷贝进度");
progressDialog.setMessage("拷贝中...");
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.show(); new Thread(){
@Override
public void run() { for (int i=0;i<=100;i++)
{
progressDialog.setProgress(i); try { Thread.sleep(100);
}
catch (Exception e)
{
e.printStackTrace();
}
}
progressDialog.dismiss(); runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(ZuoyeActivity4.this, "拷贝完成", Toast.LENGTH_SHORT).show();
}
});
}
}.start();
}
}); tv_1=(TextView)findViewById(R.id.tv_1);
bt_2=(Button)findViewById(R.id.bt_2); bt_2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//常规方法跨线程访问组件
// runOnUiThread(new Runnable() {
// @Override
// public void run() {
// tv_1.setText("");
// }
// }); h.sendEmptyMessage(2);
final ProgressDialog progressdialog=new ProgressDialog(ZuoyeActivity4.this); progressdialog.setTitle("拷贝进度"); progressdialog.setMessage("请稍后...."); progressdialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); progressdialog.show(); new Thread(new Runnable() {
@Override
public void run() {
for (int i=0;i<100;i++)
{
progressdialog.setProgress(i); try{
Thread.sleep(100);}
catch (Exception e)
{
e.printStackTrace();
}
} progressdialog.dismiss(); h.sendEmptyMessage(1);
}
}).start(); }
}); }
}

java

<?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:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.wang.myapplication.ZuoyeActivity4"
android:orientation="vertical"> <Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="开始拷贝文件--普通方式"
android:id="@+id/bt_1"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="开始拷贝文件--消息机制"
android:id="@+id/bt_2"/> <TextView
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="#ccc"
android:gravity="center"
android:textSize="16sp"
android:id="@+id/tv_1"/> </LinearLayout>

xml

1.普通方式显示结果

2-消息机制结果

progressDialog和子线程模拟显示拷贝进度的更多相关文章

  1. Android——子线程操作主线程

    子线程不能直接操作主线程 UI线程 //水平进度条 public void jdt1_onclick(View view) { final ProgressDialog pd = new Progre ...

  2. Android 子线程测试

    private volatile boolean mStopped = false; private int i; TextView tv1; TextView tv2; @Override prot ...

  3. C# 多线程详解 Part.02(UI 线程和子线程的互动、ProgressBar 的异步调用)

           我们先来看一段运行时会抛出 InvalidOperationException 异常的代码段: private void btnThreadA_Click(object sender, ...

  4. 【转载】Delphi7从子线程中发送消息到主线程触发事件执行

    在对数据库的操作时,有时要用一个子线程来进行后台的数据操作.比如说数据备份,转档什么的.在主窗口还能同是进行其它操作.而有时后台每处理一个数据文件,要向主窗口发送消息,让主窗口实时显示处理进度在窗口上 ...

  5. Android -- ViewRoot,关于子线程刷新UI

    Android在4.0之后执行线程更新UI操作会报异常:CalledFromWrongThreadException:Only the original thread that created a v ...

  6. Java如何等待子线程执行结束

    工作中往往会遇到异步去执行某段逻辑, 然后先处理其他事情, 处理完后再把那段逻辑的处理结果进行汇总的产景, 这时候就需要使用线程了. 一个线程启动之后, 是异步的去执行需要执行的内容的, 不会影响主线 ...

  7. WPF 利用子线程弹出子窗体的研究

    一般来说子线程都是用来处理数据的,主窗体用来实现展现,但是有些时候我们希望子窗体实现等待效果,遮挡主窗体并使主窗体逻辑正常进行,这个业务需求虽然不多,但是正好我们用到了,于是我打算把研究成果写在这了. ...

  8. Java线程池主线程等待子线程执行完成

    今天讨论一个入门级的话题, 不然没东西更新对不起空间和域名~~ 工作总往往会遇到异步去执行某段逻辑, 然后先处理其他事情, 处理完后再把那段逻辑的处理结果进行汇总的产景, 这时候就需要使用线程了. 一 ...

  9. 19 Handler 子线程向主线程发送信息

    案例一 Message创建三种方法: package com.example.day19_handler_demo1; import android.os.Bundle; import android ...

随机推荐

  1. Python【关联接口的开发】

    import flask,time,json,hashlib,redis print("==============被调函数部分================")def my_m ...

  2. Hadoop基础-Apache Avro串行化的与反串行化

    Hadoop基础-Apache Avro串行化的与反串行化 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Apache Avro简介 1>.Apache Avro的来源 ...

  3. java基础-数组的折半查找原理

    java基础-数组的折半查找原理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果让你写一个数组的查找功能,需求如下:在一个数组中,找一个元素,是否存在于数组中, 如果存在就返回 ...

  4. php 中 FastCGI与cgi的关系,何为fastcgi

    FastCGI是语言无关的.可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持 在内存中并因此获得较高的性能.众所周知,CGI解释器的反复加载是CGI性能低下的主要原因, 如果CGI解释器 ...

  5. 51 nod 1058 N的阶乘的长度

    1058 N的阶乘的长度 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 输入N求N的阶乘的10进制表示的长度.例如6! = 720,长度为3.   In ...

  6. hdu 3065病毒侵袭持续中

    病毒侵袭持续中 http://acm.hdu.edu.cn/showproblem.php?pid=3065 Time Limit: 2000/1000 MS (Java/Others)    Mem ...

  7. jenkins+testNg+maven+git+selenium自动化集成

    准备环境,提前安装好Jenkins及git,maven插件 1.首先我们新建一个maven的工程,并且在pom.xml中配置好我们依赖的一些jar包 <?xml version="1. ...

  8. java多线程获取返回结果--Callable和Future示例

    package test.guyezhai.thread; import java.util.ArrayList; import java.util.Date; import java.util.Li ...

  9. 牛市必备的三个条件,A股现在还差几个

    1.国家政策 2.中美贸易 3.资金支持 A股变化如神! 自本月10日受美股大跌的影响后,A股先是随之震荡跳水,千股跌停:随后因高层力挺和政策支持而V型反转,集体涨停:接着上演过山车走势,有时涨得令人 ...

  10. sqlmap tamper脚本

    本文来自:SQLmap tamper脚本注释, 更新了一些脚本,<<不断更新中>> 目前已经总共有50+的脚本,故对源文章进行更新... sqlmap-master ls -l ...