你说的有点晕...
建议看一下什么是UI线程,android中UI线程是怎么回事。

解决方案 »

  1.   

    1,你每创建一个组件,这个组件还是在UI线程中执行,不是创建新的线程
    2,至于为什么不在activity中做复杂的后台计算是为了避免ANR,其实即使在service中做,也是UI线程,虽然我没有做过实验,我想如果运行多了依然会出现ANR,
    3,为什么不用new thread 呢?因为android对UI的操作只允许在UI线程做,为了避免线程风险。或者说android压根从来就没有想过让开发者在其他线程操作UI,因为多线程的同步会影响效率
      

  2.   

    我的理解是service不在activity的共同进程内。这样创建service来计算的话,可以为activity省下更多的时间。而thread正好相反,它是activity所在进程的子部分,它会占用activity所在进程的资源,因而影响时间。
      

  3.   

    Android把主线程的looper给隐藏了,主线程负责分发消息的地方应该在application,组件都是在主线程里运行。
    但组件的一些函数可能运行在其它线程:如aidl中的函数。这些都是system偷偷实现的。一言难尽。
      

  4.   

    1.你要明确一点:service如果没有单独指定线程的话,那么和主activity是在同一个线程的,就是主线程,那么也不能够在这个service中做耗时操作,否则一定会中断退出。2.如果你的一个Thread没有调用start()方法,那么它还是和主activity在一个线程的,也不能做耗时操作,你可以去做下试验建议楼主还是去看看原理性的东西。
      

  5.   

    顺便请教楼上几位,我知道activity里面不做耗时的操作,倘若有一些设计到activity的比较耗时的UI更新操作,是不是要新开一个线程来完成?但是毕竟新开的线程不是主线程不能操作UI,这个时候是不是需要使用handler来完成UI的更新啊?
      

  6.   

    Android的有哪些组件试运行在主线程中的?