Android Looper和Handler(二)

  • 格式:doc
  • 大小:26.50 KB
  • 文档页数:3

由麦可网整理,转载请注明出处 Android Looper和Handler(二) 还Activity的生命周期函数(如onCreate(),onResume)本身也是通过 一个基于其MainUI线程的Looper(即ActivityThread的Main函数线程)的Handler(即ActivityThread的H mH这个Handler)来调用的.也就说这些函数都是在Looper.loop()中被执行的。当然如果我们创建了一个基于Activity本身的MainUI线程的Looper的Handler的话,该Handler的事务处理也是在Looper.loop()中进行的。我们从测试实例1也可以看到这一点。 测试实例1: Java代码:package eoe.robin; import Android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.util.Log; public class MainActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Log.i(tag,"-----------------------------------------------"); StackTraceElement st[]= Thread.currentThread().getStackTrace(); for(int i=0;iLog.i(tag,i+":"+st[i]); Log.i(tag,"------------------------------------------------"); handler=new Handler(); handler.postDelayed(r, 100); handler2.postDelayed(r, 200); } final static String tag="robin"; Handler handler; Handler handler2=new Handler(); Runnable r=new Runnable(){ public void run() { StackTraceElement st[]= Thread.currentThread().getStackTrace(); for(int i=0;iLog.i(tag,i+":"+st[i]); Log.i(tag,"----------------------------------------------"); } }; } 复制代码 测试结果: java代码: 由麦可网整理,转载请注明出处 07-20 22:10:18.799: INFO/robin(7844): ----------------------------------------------- 07-20 22:10:18.819: INFO/robin(7844): 0:dalvik.system.VMStack.getThreadStackTrace(Native Method) 07-20 22:10:18.819: INFO/robin(7844): 1:java.lang.Thread.getStackTrace(Thread.java:788) 07-20 22:10:18.819: INFO/robin(7844): 2:com.teleca.robin.MainActivity.onCreate(MainActivity.java:15) 07-20 22:10:18.819: INFO/robin(7844): 3:android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 07-20 22:10:18.819: INFO/robin(7844): 4:android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2633) 07-20 22:10:18.819: INFO/robin(7844): 5:android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2685) 07-20 22:10:18.819: INFO/robin(7844): 6:android.app.ActivityThread.access$2300(ActivityThread.java:126) 07-20 22:10:18.819: INFO/robin(7844): 7:android.app.ActivityThread$H.handleMessage(ActivityThread.java:2038) 07-20 22:10:18.819: INFO/robin(7844): 8:android.os.Handler.dispatchMessage(Handler.java:99) 07-20 22:10:18.819: INFO/robin(7844): 9:android.os.Looper.loop(Looper.java:123) 07-20 22:10:18.819: INFO/robin(7844): 10:android.app.ActivityThread.main(ActivityThread.java:4633) 07-20 22:10:18.819: INFO/robin(7844): 11:java.lang.reflect.Method.invokeNative(Native Method) 07-20 22:10:18.819: INFO/robin(7844): 12:java.lang.reflect.Method.invoke(Method.java:521) 07-20 22:10:18.819: INFO/robin(7844): 13:com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858) 07-20 22:10:18.819: INFO/robin(7844): 14:com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 07-20 22:10:18.819: INFO/robin(7844): 15:dalvik.system.NativeStart.main(Native Method) 07-20 22:10:18.819: INFO/robin(7844): ------------------------------------------------ 07-20 22:10:18.969: INFO/robin(7844): 0:dalvik.system.VMStack.getThreadStackTrace(Native Method) 07-20 22:10:18.969: INFO/robin(7844): 1:java.lang.Thread.getStackTrace(Thread.java:788) 07-20 22:10:18.969: INFO/robin(7844): 2:com.teleca.robin.MainActivity$1.run(MainActivity.java:29) 07-20 22:10:18.969: INFO/robin(7844): 3:android.os.Handler.handleCallback(Handler.java:587) 07-20 22:10:18.969: INFO/robin(7844): 4:android.os.Handler.dispatchMessage(Handler.java:92) 07-20 22:10:18.969: INFO/robin(7844): 5:android.os.Looper.loop(Looper.java:123) 07-20 22:10:18.969: INFO/robin(7844): 6:android.app.ActivityThread.main(ActivityThread.java:4633) 07-20 22:10:18.969: INFO/robin(7844): 7:java.lang.reflect.Method.invokeNative(Native Method) 07-20 22:10:18.969: INFO/robin(7844): 8:java.lang.reflect.Method.invoke(Method.java:521) 07-20 22:10:18.969: INFO/robin(7844): 9:com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858) 07-20 22:10:18.969: INFO/robin(7844):