您的位置:首页 > 移动开发 > Android开发

[android]无聊写个android的GCDのdispatch_async

2015-08-21 00:00 615 查看
摘要: 无聊写个仿IOS 的android GCDのdispatch_async

Block

public interface Block
{

/**
*
* 需要执行的任务
*
* @return Object 执行的结果
*/
void IBuild();

}


GCD

/**
* GCD of Android
*
* @author fred don
*
*/
public class GCD
{

public static String dispatch_get_main_queue()
{
return "main";
}
/**
* 1 x后台 运行
*
* @author fred don
* @param threadName
*            [main UI线程运行 ,others /后台 运行]
* @param block
*/
public static void dispatch_async(String threadName, final Block block)
{
if ("main".equals(threadName))
{
handler.post(new Runnable()
{
@Override
public void run()
{
if (block != null)
{
block.IBuild();
}
}
});
}
else
{
Thread t = new Thread(new Runnable()
{
@Override
public void run()
{
if (block != null)
{
block.IBuild();
}
}
});
t.setName(threadName);
t.start();
}
}

static Handler handler=new Handler();
}


用法

//后台线程
GCD.dispatch_async("back", new Block()
{

@Override
public void IBuild()
{
println(Thread.currentThread().getName());
GCD.dispatch_async("main", new Block()
{

@Override
public void IBuild()
{
println(Thread.currentThread().getName());

}

});
}

});
//UI线程
GCD.dispatch_async("main", new Block()
{

@Override
public void IBuild()
{
println(Thread.currentThread().getName());

}

});

public static void println(String s){
Log.i("GCDTester", s);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息