精华内容
下载资源
问答
  • handler传值

    2017-10-18 09:27:28
    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);  } ...

    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);
                }
    展开全文
  • Android Handler传值的demo

    2015-09-22 11:08:23
    Android Handler传值的,简单的介绍了Handler的用法
  • 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,也赋值了一遍.
    那么你的主线程数据就完全乱套了.






     


    展开全文
  • 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:结合线程的消息队列来发送,处理Message对象和Runnable对象的工具 Handler:1)新启动的线程发送消息 2)主线程获取,处理消息 避免内存泄露的方式:声明静态内部内和弱引用 //主线程来获取消息,并处理...
  • name: <asp:TextBox ID="txtName" runat="server"></asp:TextBox><br /> context:<asp:TextBox ID="txtContext" runat="server">...asp:Button ID="btnMsg" runat="server" Text="添加" ...
  • 如何用Handler实现传值

    2017-07-20 10:59:39
    有的时候我们需要用到传值,传值我们就需要用到Handler了 我们要现在下面定义一个message Message message = Message.obtain(); message.arg1 = 1; hand.sendMessage(message); ...
  • Handler 页面传值

    2010-11-16 17:00:00
    在aspx页面中获取页面元素的值 在后台可以直接取值 但是这种取值会有一定的刷新 所以就使用的Handler页面处理代码了 页面元素什么的都不写了 写一个方法是那个意思就行了 里面用了jquery.popup这个外部JQ文件 ...
  • 参考博客... 方法一Handler传值: 首先在MainAvtivity类声明一个Handler private Handler mHandler; public void setHandler(Handler handler) { mHandle...
  • 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...
  • public partial class Search : System.Web.UI.Page{private string _sql; public string SQL { get { return _sql; } set { _sql = value; } } void button_click(){ 
  • 很有用的页面间传值方法(Context.Handler),使用说明
  • handler和message传值两例 程序效果:为了显示如何用message传值的简单例子 例1,点击按钮,持续显示当前系统时间(bundle传值,耗时,效率低) 例2,点击按钮,progressbar持续前进(message方法传值...
  • Handler(单例传值)

    2016-02-18 12:12:00
    1 声明单例字符串类型,以copy类型 2 单例是类方法 3 返回值类型是instancetype ...static Handler *handler = nil;//需要把单例创建为全局变量 @implementation Handler + (instancetype)shareInstance{ ...
  • 很有用的页面间传值方法(Context.Handler),使用说明 一、目前在ASP.NET中页面传值共有这么几种方式: 1、表单提交, <form action= "target.aspx" method = "post" name = "form1"> <input name = "param...
  • package com.example.button_test; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.annotation.SuppressLint; import android.app.Activity; import and
  • 一、目前在ASP.NET中页面传值共有这么几种方式: 1、表单提交, <form action= "target.aspx" method = "post" name = "form1"> <input name = "param1" value = "1111"/> <input name = "param2" ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,467
精华内容 4,986
关键字:

handler传值