Block
public interface block{/** * * Required Tasks * * @return The result of Object execution */void ibuild ();}
GCD
/** * gcd of android * * @author fred don * */ Public class gcd{public static string dispatch_get_main_queue () {return "main";} /** * 1 x background Run * * @author fred don * @param threadName * [main UI thread run ,others /background run] * @param block */public static void Dispatch_async (String threadname, final block block) {if ("Main". Equals (ThreadName)) { Handler.post (New runnable () {@Overridepublic void run () {if (block != null) {block. Ibuild ();}});} Else{thread t = new thread (New runnable () {@Overridepublic void run () {if (block != null) {block. Ibuild ();}}); T.setname (ThreadName); T.start ();}} static handler handler=new handler ();}
Usage
Background thread Gcd.dispatch_async ("Back", new Block () {@Overridepublic void Ibuild () {println (Thread.CurrentThread (). GetName ( )); Gcd.dispatch_async ("main", new Block () {@Overridepublic void Ibuild () {println (Thread.CurrentThread (). GetName ());});}); /ui thread Gcd.dispatch_async ("main", new Block () {@Overridepublic void Ibuild () {println (Thread.CurrentThread (). GetName () );}}); public static void println (String s) {log.i ("Gcdtester", s);}
Bored to write an android Gcdのdispatch_async