android java thread_java-如何等待Android runOnUiThread完成?

安德鲁的回答很好,我创建了一个类以便于使用。

接口实现:

/**

* Events for blocking runnable executing on UI thread

*

* @author

*

*/

public interface BlockingOnUIRunnableListener

{

/**

* Code to execute on UI thread

*/

public void onRunOnUIThread();

}

类的实现:

/**

* Blocking Runnable executing on UI thread

*

* @author

*

*/

public class BlockingOnUIRunnable

{

// Activity

private Activity activity;

// Event Listener

private BlockingOnUIRunnableListener listener;

// UI runnable

private Runnable uiRunnable;

/**

* Class initialization

* @param activity Activity

* @param listener Event listener

*/

public BlockingOnUIRunnable( Activity activity, BlockingOnUIRunnableListener listener )

{

this.activity = activity;

this.listener = listener;

uiRunnable = new Runnable()

{

public void run()

{

// Execute custom code

if ( BlockingOnUIRunnable.this.listener != null ) BlockingOnUIRunnable.this.listener.onRunOnUIThread();

synchronized ( this )

{

this.notify();

}

}

};

}

/**

* Start runnable on UI thread and wait until finished

*/

public void startOnUiAndWait()

{

synchronized ( uiRunnable )

{

// Execute code on UI thread

activity.runOnUiThread( uiRunnable );

// Wait until runnable finished

try

{

uiRunnable.wait();

}

catch ( InterruptedException e )

{

e.printStackTrace();

}

}

}

}

使用它 :

// Execute an action from non-gui thread

BlockingOnUIRunnable actionRunnable = new BlockingOnUIRunnable( yourActivity, new BlockingOnUIRunnableListener()

{

public void onRunOnUIThread()

{

// Execute your activity code here

}

} );

actionRunnable.startOnUiAndWait();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值