精华内容
下载资源
问答
  • Android Handler传值的demo

    2015-09-22 11:08:23
    Android Handler传值的,简单的介绍了Handler的用法
  • Android Handler传值

    2021-04-17 10:42:31
    //Bundle传值 Message msg = new Message(); Bundle bundle = new Bundle(); bundle.putString("value", value); msg.setData(bundle); msg.what = 1000; mHandler.sendMessage(msg); //接收 private ...
    			//Bundle传值 
    			Message msg = new Message();
                Bundle bundle = new Bundle();
    
                bundle.putString("value", value);
                msg.setData(bundle);
                msg.what = 1000;
                mHandler.sendMessage(msg);
    
    //接收
    private Handler mHandler = new Handler() {
            public void handleMessage(Message msg) {
                if (msg.what == 1000) {
                    Bundle data = msg.getData();
                    String value = data.getString("value");
                    Log.e(TAG, "handleMessage: ---------handleMessage-----" +value);
                    tvSecond.setText(" "+value + "s " + MyApplication.getContext().getString(R.string.temperature));
                }
                super.handleMessage(msg);
            }
        };
    
    展开全文
  • Android Handler传值方式

    2015-01-29 09:58:00
    前面介绍handler的时候,也用到过几种传值方式,今天来总结一下,并且重点说一下bundle方式,代码如下: package com.handlerThread; import android.app.Activity; import android.os.Bundle; import ...

    前面介绍handler的时候,也用到过几种传值方式,今天来总结一下,并且重点说一下bundle方式,代码如下:

    package com.handlerThread;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.HandlerThread;
    import android.os.Looper;
    import android.os.Message;
    
    public class handlerThread2 extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            
            //System.out.println("activity线程ID:"+Thread.currentThread().getId());
            HandlerThread handlerThread = new HandlerThread("handlerThread");
            handlerThread.start();
            MyHandler handler = new MyHandler(handlerThread.getLooper());
            Message msg = handler.obtainMessage();
            
            //msg.arg1 = 123;//传递整型数据
            //msg.obj = "asd";传递object类型
            
            //利用bundle对象来传值
            Bundle b = new Bundle();
            b.putInt("ID", 12);
            b.putString("name", "thinkpad");
            msg.setData(b);
            
            msg.sendToTarget();
        }
        class MyHandler extends Handler {
    
            public MyHandler() {
                super();
            }
    
            public MyHandler(Looper looper) {
                super(looper);
            }
    
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                //int args = msg.arg1;
                //String s = (String)msg.obj;
                
                //获取bundle对象的值
                Bundle b = msg.getData();
                int id = b.getInt("ID");
                String name = b.getString("name");
                System.out.println("id is "+id+", name is "+name);
                
                //System.out.println("handler线程ID:"+Thread.currentThread().getId());
            }
            
        }
    
    }

    运行结果

    那么,bundle具体是个什么东西呢,我们来看一下官方的解释

     

    展开全文
  • handler传值

    2017-10-18 09:27:28
     public void handleMessage(android.os.Message msg) {  if (msg.what == 0) {  String time = (String) msg.obj;  main_time.setText(time);  }  };  }; public ...

    private Handler handler = new Handler() {
            public void handleMessage(android.os.Message msg) {
                if (msg.what == 0) {
                    String time = (String) msg.obj;
                    main_time.setText(time);
                }

            };
        };




    public void run() {

                    // 获取当前系统时间
                    date = new Date();
                    // 格式化当前系统时间
                    String format = sdf.format(date);
                    Message msg = Message.obtain();
                    msg.what = 0;
                    msg.obj = format;
                    // 发送
                    handler.sendMessage(msg);
                }
    展开全文
  • bundle传值,耗时,效率低 message方法传值,效率高,但只能传整型int和对象object...Handler传值方式之Handler public class MainActivity extends Activity { private TextView tv; private Bundle bundle; priva

    bundle传值,耗时,效率低

    message方法传值,效率高,但只能传整型int和对象object(msg.arg1,msg.arg2,msg.obj)

    Handler传值方式之Handler

    <pre name="code" class="java">public class MainActivity extends Activity {
    	private TextView tv;
    	private Bundle bundle;
    	private Message message;
    	private Handler mHandler = new Handler(){
    		public void handleMessage(android.os.Message msg) {
    			Bundle b = msg.getData();
    			int num = b.getInt("num");
    			String name = b.getString("name");
    			tv.setText("num:"+num+"\nname:"+name);
    		};
    	};
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		tv = (TextView) findViewById(R.id.text);
    		findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {
    			
    			@Override
    			public void onClick(View v) {
    				// TODO Auto-generated method stub
    				//startActivity(new Intent(MainActivity.this,MainActivity2.class));
    				message = new Message();
    				bundle = new Bundle();
    				bundle.putInt("num", 10);
    				bundle.putString("name", "zhang");
    				message.setData(bundle);
    				message.what = 1;
    				mHandler.sendMessage(message);
    			}
    		});
    	}
    
    }

     
    

    Handler传值方式之Message

    public class MainActivity extends Activity {
    	private TextView tv;
    	private Bundle bundle;
    	private Message message;
    	private Handler mHandler = new Handler(){
    		public void handleMessage(android.os.Message msg) {
    			int num = msg.arg1;
    			String name = (String) msg.obj;
    			tv.setText("num:"+num+"\nname:"+name);
    		};
    	};
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		tv = (TextView) findViewById(R.id.text);
    		findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {
    			
    			@Override
    			public void onClick(View v) {
    				message = mHandler.obtainMessage(1);
    				message.arg1 = 11;//传整型
    				message.obj = "zhang";//传String等
    				message.sendToTarget();
    			}
    		});
    	}
    }
    Message和obtainMessage的区别

    用过Handler的人都知道,Message有两种获取方法
    Message msg = new Message();
    或者
    Message msg = handler.obtainMessage();
    这两种方法的区别是,前者是new的,需要开辟内存空间;后者是从global Message pool中取,性能消耗相对少;
    我想问的是,global Message pool的概念?
    我在程序中并没有创建过Message,可以使用obtainMessage()方法来获取Message对象吗?如果可以,那这个取到的Message是哪儿来的?

    使用obtainMessage()既然没有new,那么我obtainMessage得到的Message就可能是同一个,如果线程A通过handler.obtainMessage()得到了message,并且把相关属性赋值了,然后通过sendMessage加入到主线程中,主线程正要去取这个message里的相关信息,还没取,线程A由于运行频率较高又get了一遍,又赋上了新值.
    或者还有一个线程,线程B也get,也赋值了一遍.
    那么你的主线程数据就完全乱套了.






     


    展开全文
  • Handler:结合线程的消息队列来发送,处理Message对象和Runnable对象的工具 Handler:1)新启动的线程发送消息 2)主线程获取,处理消息 避免内存泄露的方式:声明静态内部内和弱引用 //主线程来获取消息,并处理...
  • android常见传值

    2018-12-31 20:40:23
    java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() 如果先发送后写的注册代码,可以用粘性发送 EventBus.getDefault().postSticky(new MessageEvent(...
  • android Service传值

    千次阅读 2016-04-06 16:46:51
    android.os.Handler() { @Override public void handleMessage(Message msg) { super .handleMessage(msg); if (msg. arg1 == RECALL_NAME ) { textView .setText(msg.getData().getString( "name" )...
  • 在应用中我们经常会遇到传值的问题,总结了一下,以备不时之需 1.intent 基本使用: 1)在第一个activity中,我们通过putExtra()方法,通过键值对的形式放入intent中,也可以将数据全都用bundle打包好,再放入intent...
  • 1,建立当前的界面内容,获取到当前界面的指定需要传的...import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.Menu; import android.widget.LinearLayout; import a...
  • 参考博客... 方法一Handler传值: 首先在MainAvtivity类声明一个Handler private Handler mHandler; public void setHandler(Handler handler) { mHandle...
  • Android传值

    2010-02-03 10:24:37
    推荐安卓开发神器(里面有各种UI特效和android代码库实例) ...在Android平台传值,主要使用两种方法一个事 PendingIntent 另一个就是广播了按照大类,我把相关的类进行了划分1.实体类 Intent 、Context 、 Br...
  • android 传值精讲

    2011-10-10 11:11:33
    当一个application 中有多个 Activity的时候,那么每个Activity之前的传值就是一个问题了。...在Android平台传值,主要使用两种方法一个事 PendingIntent 另一个就是广播了 按照大类,我把相关的类进行
  • android handler与eventbus对比

    千次阅读 2016-11-13 18:31:51
    android handler与eventbus对比
  • Android Handler详解

    2016-02-22 14:01:14
    Android的消息传递机制是另外一种形式的“事件处理”,这种机制主要是为了解决Android应用中多线程的问题,在Android中不允许Activity新启动的线程访问该Activity里的UI组件,这样会导致新启动的线程无法改变UI组件...
  • 一、官方解释A Handler allows you to send and process [Message](https://developer.android.com/reference/android/os/Message.html) and Runnable objects associated with a thread's [MessageQueue]...
  • Handler用Bundle传值

    2019-10-05 00:41:12
    package com.handler.cn; import android.app.Activity; import android.os.Bundle;...import android.os.Handler; import android.os.Message; import android.view.View; import android.widget.Butt...
  • 利用bundle对象来传值 Bundle b = new Bundle(); b.putInt( " ID " , 12 ); b.putString( " name " , " thinkpad " ); msg.setData(b); msg.sendToTarget(); } class MyHandler extends Handler { ...
  • 如果你启动了一个线程,比如去扫描蓝牙设备列表,扫描了以后,然后想去更新,你的android的UI 这个时候就会报错,说你必须在你的UI线程中,去更新你的UI,这个时候,你可以,先用一个线程去扫描蓝牙设备, 得到蓝牙设备列表...
  • 做过 Android 开发的童鞋都知道,不能在非主线程修改 UI 控件,因为 Android 规定只能在主线程中访问 UI ,如果在子线程中访问 UI ,那么程序就会抛出异常 android.view.ViewRootImpl$...
  • 欢迎访问我的个人博客 传送门前言做过 Android 开发的童鞋都知道,不能在非主线程修改 UI 控件,因为 Android 规定只能在主线程中访问 UI ,如果在子线程中访问 UI ,那么程序就会抛出异常android.view.ViewRootImpl...
  • Android 平台如何传值

    2010-05-20 13:22:00
    当一个application 中有多个 ...在Android平台传值,主要使用两种方法一个事 PendingIntent 另一个就是广播了按照大类,我把相关的类进行了划分1.实体类 Intent 、Context 、 BroadcastReceiver 2.方法类 Pendi

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,702
精华内容 1,080
关键字:

androidhandler传值