×

handler类的作用

handler类的作用(java 中为什么要引入handler这种设计方法)

admin admin 发表于2023-10-13 18:33:19 浏览31 评论0

抢沙发发表评论

本文目录

java 中为什么要引入handler这种设计方法

代码的目的是满足需求,操作方便自然就写了,无论handler还是controller,都是为了实现需求,但当出现大量handler的时候,说明这个程序员啥都不懂,连命名都不会了,命名成XXService、XXDao等,至少从代码上可以看出层次看出功能,便于后期维护 如果这是项目经理写的,只能说明他画虎不成反类犬,很不可取,千万别跟他学

handler在extjs中起什么作用

handler这个属性用于指定事件处理的函数。比如你在一个按钮构造的时候指定它的属性 handler:function(){ alert(“Hello“); }那么你在点击这个按钮的时候,就会执行handler后面的函数(这里是一个匿名函数),弹出一个文本内容为Hello的对话框。

android中handler如何使用

  Handler在Android中主要是负责发送和处理消息。它的主要用途大致是下面两个:  1)按计划发送消息或执行某个Runnanble;  2)从其他线程中发送来的消息放入消息队列中,避免线程冲突(常见于更新UI线程)  学写一下,在UI线程中,系统已经有一个Activity来处理了,你可以再起若干个Handler来处理。在实例化Handler的时候,只要有Handler的指针,任何线程也都可以sendMessage。  Handler对于Message的处理是异步处理的。一个Looper 只有处理完一条Message才会读取下一条,所以消息的处理是阻塞形式的(handleMessage()方法里不应该有耗时操作,可以将耗时操作放在其他线程执行,操作完后发送Message(通过sendMessges方法),然后由handleMessage()更新UI)。  根据对视频的学习写了一个通过Button控件启动进度条(类似于下载等操作)的程序,简单介绍一下,有两个Button控件,一个是开始,点击之后会显示一个进度条以每次十分之一的进度进行(一开始是隐藏的),另一个是停止,可以中断进度。  java代码:  1 package zzl.handleactivity;  2  3 import android.app.Activity;  4 import android.os.Bundle;  5 import android.os.Handler;  6 import android.os.Message;  7 import android.view.Gravity;  8 import android.view.View;  9 import android.view.View.OnClickListener;  10 import android.widget.Button;  11 import android.widget.ProgressBar;  12 import android.widget.Toast;  13  14 public class Handler_01 extends Activity {  15  16 //声明变量  17 private Button startButton=null;  18 private Button endButton=null;  19 private ProgressBar firstBar=null;  20 private Toast toast=null;  21 @Override  22 protected void onCreate(Bundle savedInstanceState) {  23 super.onCreate(savedInstanceState);  24 setContentView(R.layout.main);  25  26 //根据ID获取对象  27 startButton =(Button)findViewById(R.id.startButton);  28 endButton=(Button)findViewById(R.id.endButton);  29 firstBar=(ProgressBar)findViewById(R.id.firstBar);  30 //给对象设置动作监听器  31 startButton.setOnClickListener(new StartButtonListener());  32 endButton.setOnClickListener(new EndButtonListener());  33 }  34  35 class StartButtonListener implements OnClickListener{  36  37 @Override  38 public void onClick(View v) {  39 // TODO Auto-generated method stub  40 //一开始执行,加入到消息队列,不延迟,  41 //然后马上执行run方法  42 firstBar.setVisibility(View.VISIBLE);  43 firstBar.setMax(100);  44 handler.post(upRunnable);  45 toast=Toast.makeText(Handler_01.this, “运行开始“, Toast.LENGTH_SHORT);  46 toast.setGravity(Gravity.CENTER, 0, 0);  47 toast.show();  48 }  49 }  50 class EndButtonListener implements OnClickListener{  51  52 @Override  53 public void onClick(View v) {  54 // TODO Auto-generated method stub  55 //停止  56 handler.removeCallbacks(upRunnable);  57 System.out.println(“It’s time to stop...“);  58 }  59 }  60  61 //创建handler对象,在调用post方法  62 //异步消息处理:将下载或者处理大数据等等单独放到另一个线程  63 //更好的用户体验  64 Handler handler=new Handler(){  65  66 @Override  67 public void handleMessage(Message msg){  68 firstBar.setProgress(msg.arg1);  69 firstBar.setSecondaryProgress(msg.arg1+10);  70 //handler.post(upRunnable);  71 if(msg.arg1《=100) {  72 handler.post(upRunnable); //将要执行的线程放入到队列当中  73 }else {  74 handler.removeCallbacks(upRunnable);  75 }  76 }  77 };  78  79 //声明线程类:实现Runnable的接口  80 Runnable upRunnable=new Runnable() {  81  82 int i=0;  83 @Override  84 public void run() {//程序的运行状态  85 // TODO Auto-generated method stub  86 //postDelayed方法:把线程对象加入到消息队列中  87 // 隔2000ms(延迟)  88 System.out.println(“It’s time to start...“);  89 i=i+10;  90 //获取Message消息对象  91 Message msg=handler.obtainMessage();  92 //将msg对象的arg1(还有arg2)对象的值设置  93 //使用这两个变量传递消息优点:系统消耗性能较少  94 msg.arg1=i;  95 try{  96 //设置当前显示睡眠1秒  97 Thread.sleep(1000);  98 }catch(InterruptedException e){  99 e.printStackTrace();  100 }  101 //将msg对象加入到消息队列当中  102 handler.sendMessage(msg);  103 if(i==100){//当值满足时,将线程对象从handle中剔除  104 handler.removeCallbacks(upRunnable);  105 firstBar.setVisibility(View.GONE);  106 //临时弹出  107  108 toast=Toast.makeText(Handler_01.this, “运行结束“, Toast.LENGTH_SHORT);  109 toast.setGravity(Gravity.CENTER, 0, 0);  110 toast.show();  111 }  112 }  113 };  114 }  main.xml  1 《LinearLayout xmlns:android=“  如果要实现调用另一个新的线程,只要注释post方法,然后加上这样两段代码即可: Thread t = new Thread(r); t.start();

android中Handler的post方法的作用是什么

在工作线程中执行耗时任务,当任务完成时,会返回UI线程,一般是更新UI。这时有两种方法可以达到目的。

一种是handler.sendMessage。发一个消息,再根据消息,执行相关任务代码。

另一种是handler.post(r)。r是要执行的任务代码。意思就是说r的代码实际是在UI线程执行的。可以写更新UI的代码。

扩展资料

一个APK文件结构为:

1、META-INF\ (注:Jar文件中常可以看到);

2、res\ (注:存放资源文件的目录) ;

3、AndroidManifest.xml (注:程序全局配置文件) ;

4、classes.dex (注:Dalvik字节码);

5、resources.arsc (注:编译后的二进制资源文件)。

Android在运行一个程序时首先需要UnZip,然后类似Symbian那样直接执行安装,和Windows Mobile中的PE文件有区别,这样做对于程序的保密性和可靠性不是很高,通过dexdump命令可以反编译,但这样做符合发展规律,微软的 Windows Gadgets或者说WPF也采用了这种构架方式。

在Android平台中dalvik vm的执行文件被打包为apk格式,最终运行时加载器会解压然后获取编译后androidmanifest.xml文件中的permission分支相关的安全访问,但仍然存在很多安全限制,如果你将apk文件传到/system/app文件夹下会发现执行是不受限制的。

参考资料来源:百度百科-Android