runWithScissors

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.2.2_r1/android/os/Handler.java

Runs the specified task synchronously. If the current thread is the same as the handler thread, then the runnable runs immediately without being enqueued. Otherwise, posts the runnable to the handler and waits for it to complete before returning. This method is dangerous! Improper use can result in deadlocks. Never call this method while any locks are held or use it in a possibly re-entrant manner. This method is occasionally useful in situations where a background thread must synchronously await completion of a task that must run on the handler's thread. However, this problem is often a symptom of bad design. Consider improving the design (if possible) before resorting to this method. One example of where you might want to use this method is when you just set up a Handler thread and need to perform some initialization steps on it before continuing execution. If timeout occurs then this method returns false but the runnable will remain posted on the handler and may already be in progress or complete at a later time.

Parameters:
r The Runnable that will be executed synchronously.
timeout The timeout in milliseconds, or 0 to wait indefinitely.
Returns:
Returns true if the Runnable was successfully executed. Returns false on failure, usually because the looper processing the message queue is exiting.
Hide:
This method is prone to abuse and should probably not be in the API. If we ever do make it part of the API, we might want to rename it to something less funny like runUnsafe().
448
449
    public final boolean runWithScissors(final Runnable rlong timeout) {
450
        if (r == null) {
451
            throw new IllegalArgumentException("runnable must not be null");
452
        }
453
        if (timeout < 0) {
454
            throw new IllegalArgumentException("timeout must be non-negative");
455
        }
456
457
        if (Looper.myLooper() == ) {
458
            r.run();
459
            return true;
460
        }
461
462
        BlockingRunnable br = new BlockingRunnable(r);
463
        return br.postAndWait(thistimeout);
464
    }

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值