1.activity 代码
package com.test.org.helloworld; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.view.View; import android.widget.Button; import android.widget.ProgressBar; import android.widget.TextView; import android.os.Message; public class MainActivity extends Activity { private TextView mTextView01; private Button mButton01; private ProgressBar mProgressBar01; public int intCounter = 0; //自定义Handle信息代码用做别的识别 protected static final int GUI_STOP_NOTIFIER = 0x108; protected static final int GUI_THREADING_NOTIFIER = 0x109; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mButton01 = (Button)findViewById(R.id.myButton1); mTextView01 = (TextView)findViewById(R.id.myTextView1); mProgressBar01 = (ProgressBar)findViewById(R.id.myProgressBar1); mProgressBar01.setIndeterminate(false); mButton01.setOnClickListener(new Button.OnClickListener(){ @Override public void onClick(View view) { mTextView01.setText(R.string.string_start); mProgressBar01.setVisibility(View.VISIBLE); mProgressBar01.setMax(100); mProgressBar01.setProgress(0); new Thread(new Runnable() { @Override public void run() { for(int i=0;i<10;i++){ try{ Thread.sleep(1000); intCounter = (i+1)*20; if(i==5){ Message m = new Message(); m.what = MainActivity.GUI_STOP_NOTIFIER; MainActivity.this.myMessageHandle.sendMessage(m); break; }else{ Message m = new Message(); m.what = MainActivity.GUI_THREADING_NOTIFIER; MainActivity.this.myMessageHandle.sendMessage(m); } }catch (Exception e){ e.printStackTrace(); } } } }).start(); } }); } Handler myMessageHandle = new Handler() { public void handleMessage(Message msg){ switch (msg.what){ case MainActivity.GUI_STOP_NOTIFIER: mTextView01.setText(R.string.str_progress_done); mProgressBar01.setVisibility(View.GONE); Thread.currentThread().interrupt(); break; case MainActivity.GUI_THREADING_NOTIFIER: if(!Thread.currentThread().isInterrupted()){ mProgressBar01.setProgress(intCounter); mTextView01.setText(getResources().getText(R.string.str_progress_start)+ "("+Integer.toString(intCounter)+"%) "+ "Progress:"+ Integer.toString(mProgressBar01.getProgress())+ " "+"Indeterminate:"+ Boolean.toString(mProgressBar01.isIndeterminate()) ); } break; } super.handleMessage(msg); } }; }
2.main.xml文件
3.效果图
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/13899.html
摘要:追踪正在进行的计算的状态。为了知道作业的进度,通过监听端口来接受二进制文件发来的信息。子系统监听的子系统包括多种预编译二进制文件。这些二进制文件被分配给对应的在应用层定义好的计算模版。 KernelHive: a new workflow-based framework for multilevel high performance computing using clusters a...
摘要:在程序运行的时候就被创建,是一个当中的主线程,主要是负责控制界面的显示更新和控件交互。为了解决这个问题,下面将探讨这线程于子线程之间的五种交互方式。运行在线程,主要目的是为后台线程的运行做准备。然后在线程中创建该类必须在线程中创建。 什么是UI线程 在一个Android 程序开始运行的时候,会单独启动一个Process。默认的情况下,所有这个程序中的Activity或者Service(...
摘要:耗电或者内存占用等影响产品效率的每一个问题都会影响的成功。即使高效的代码也是需要时间来运行。最高效的方式就是在类这一级完成这项操作,可以使用或者来创建后台操作。 假如要Google Play上做一个最失败的案例,那最好的秘诀就是界面奇慢无比、耗电、耗内存。接下来就会得到用户的消极评论,最后名声也就臭了。即使你的应用设计精良、创意无限也没用。 耗电或者内存占用等影响产品效率的每一个问题...
摘要:本文试图从的作用说起,进一步的讲解一下内部的实现机制。内部机制内部逻辑主要有二个部分与主线的交互它内部实例化了一个静态的自定义类,这个类是继承自的,在这个自定义类中绑定了一个叫做的对象,每次子线程需要通知主线程,就调用发送消息给。 在 Android 应用开发的过程中,我们需要时刻注意保证应用程序的稳定和 UI 操作响应及时,因为不稳定或响应缓慢的应用将给应用带来不好的印象,严重的用户...
阅读 5495·2021-11-22 15:32
阅读 573·2021-11-11 16:54
阅读 2961·2021-10-13 09:40
阅读 1890·2021-09-03 10:35
阅读 1628·2021-08-09 13:47
阅读 1691·2019-08-30 15:55
阅读 1830·2019-08-30 15:43
阅读 2322·2019-08-29 17:06