最近学习android的时候,看到有个说明,Service不能执行耗时操作,但是我测试的时候好像可以用while(true)死循环的,请教一下,Service执行while(True)安全规范吗?while(true)循环监听。

解决方案 »

  1.   

    死循环和耗时操作是两码事
    死循环只是说你一直在运行  但是都是可以立即响应的  不会影响用户体验
    但是耗时不一样  比如你网络链接  很多操作是阻塞的  这样你在主线程(service就在主线程)有了用户交互  却得不到响应  这样就会出现问题如果需要做耗时操作  可以使用IntentService  自带线程的   不用继承Service自己开线程
      

  2.   

    谢谢楼上两位,讲解的非常有深度!@tanwei4199:如果不使用IntentService的话,while(true)里面只做socket.accept监听,算不算耗时操作?如果service是在主线程中的话,那么一直堵塞在这里,UI无法交互吗?我试试看,多谢
      

  3.   

    @wlcw16,@tanwei4199:
    以下任务:
    while(true)
    {
      socket.accept;
      newthread;
    }
    是在IntentService中好一些还是新建一个线程好一些?
      

  4.   

    楼主 注意 
    如果你用intentservice  做  while(true)  必须知道 intentsercice是 排队方式进行的上一个任务不结束 他不会执行下一个 也就是这个while 中没有结束  下面的就会永远的等待
      

  5.   

    @貌似没用
    像这种自己启动线程会方便些  因为你的功能比较单一  没必要使用IntentService
    不过你可以用用