而Proc对象拥有call方法,调用该方法就会执行block的代码段。
因此,例子中第二次调用trap时,返回的是 proc { puts 'first signal handler' },并赋给了old_handler变量。
在捕获中断时,就执行:
old_handler.call # 这里就是调用了Proc对象的call方法,执行了第一次调用trap时传入的block
puts 'second signal handler'
exit
1、用static声明handler,静态类不会引用外部类2、如果Handler中必须用到Activity,那就用WeakReference去引用
3、在Activity结束或暂停的事件中,removeMessages或者removeCallbacksAndMessages将消息队列中的消息移除(避免满足上面两条后,当Activity关闭了,但是Handler还未处理到,造成内存泄露)