ruby 进程捕捉信号的疑问

Python017

ruby 进程捕捉信号的疑问,第1张

trap方法返回的是前一次调用时传入的block,实际上是一个Proc对象

而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还未处理到,造成内存泄露)