Handler进程之间通信
来源:互联网 发布:安卓新闻推荐 知乎 编辑:程序博客网 时间:2024/05/17 17:45
java代码
package com.example.zhang.handlertest;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.os.SystemClock;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.ProgressBar;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends AppCompatActivity { TextView tvProgress; ProgressBar pbProgress; Button btnDownload; Handler handler; private static final int DOWNLOADING = 1; private static final int DOLAOD_FINISH = 2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化View initView(); //设置监听器,监听按钮按下状态 setListener(); //初始化Handler initHandler(); } //初始化Handler,把TextView的UI操作放在主线程里面 private void initHandler() { //无参构造方法 handler = new Handler(){ @Override //接受并处理从工作线程发来的消息 public void handleMessage(Message msg) { // tvProgress.setText(msg.arg1 + "%"); switch (msg.what){ //判断 case DOWNLOADING : tvProgress.setText(msg.arg1 + "%"); break; case DOLAOD_FINISH : tvProgress.setText(msg.arg1 + "%"); Toast.makeText(MainActivity.this, "下载完成", Toast.LENGTH_SHORT).show(); } } }; } //setLsitener方法 private void setListener() { //匿名内部类作为事件监听处理 btnDownload.setOnClickListener(new View.OnClickListener() { @Override //重写onClick()方法 public void onClick(View v) { //新建工作线程 new Thread(){ @Override //重写run()方法 public void run() { for (int j = 1; j <= 100; j++){ //调用系统延时20ms SystemClock.sleep(20); //Progress进度条可以在工作线程操作,其他UI操作都不可以,只能在主线程操作 pbProgress.setProgress(j); //从整个Messge池中返回一个新的Message实例,在许多情况下使用它, // 因为它能避免分配新的对象,通过调用obtainMessage方法获取Message对象 // 就能避免创建对象,从而减少内存的开销了。 Message msg = Message.obtain(); // Message msg = new Message(); msg.what = DOWNLOADING; msg.arg1 = j; handler.sendMessage(msg); /* if(j == 100){ j = 1; } */ } Message msg = Message.obtain(); msg.what = DOLAOD_FINISH; msg.arg1 = 100; handler.sendMessage(msg); } }.start(); } }); } private void initView() { tvProgress = (TextView) findViewById(R.id.tvProgress); pbProgress = (ProgressBar) findViewById(R.id.pbProgress); btnDownload = (Button)findViewById(R.id.btnDownLoad); }}
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" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:context="com.example.zhang.handlertest.MainActivity" tools:showIn="@layout/activity_main"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20dp" android:text="任务进度" /> <Button android:id="@+id/btnDownLoad" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="下载"/> <ProgressBar android:id="@+id/pbProgress" android:layout_marginTop="20dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:max="100" style="@android:style/Widget.ProgressBar.Horizontal"/> <TextView android:id="@+id/tvProgress" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:textSize="20sp" android:text="%"/></LinearLayout>
图片
0 1
- Handler进程之间通信
- Handler进程间通信
- Handler: Activity 之间通过 Handler 通信
- Handler: Activity 之间通过 Handler 通信
- Handler: Activity 之间通过 Handler 通信
- Handler应用: Activity 之间通过 Handler 通信
- activity之间通过Handler通信
- 线程之间、进程之间通信
- 两个进程之间通信
- 进程之间的通信
- 进程之间 通信方式
- 进程之间如何通信
- 进程之间的通信
- 进程之间的通信
- 进程之间的通信
- 进程之间的通信
- 线程之间通信、进程之间通信
- 《Handler: Activity 之间通过 Handler 通信》 & 《通过Handler更新UI》
- linux网络命令--1--ifconfig
- BNUOJ 51003 BQG's Confusing Sequence(二进制)
- 良好的异常展现界面<500.jsp>
- HDU 5602 Black Jack(博弈dp)
- 底部RadioButton实现Fragment切换
- Handler进程之间通信
- Looper类、主线程工作线程通信
- Activity切换中Intent传递数据、对象
- 启动其他Activity并返回结果
- 任务栏 Adobe Acrobat DC / Adobe Reader 图标出错、异常、不显示(Windows下)
- Junit测试private方法
- 中国联通短信网关接入程序源代码(SGIP1.2协议)
- 项目经理问:为什么总是只有我在加班 – 挂包袱现象
- notepad++实现多处编辑