补充下,在new Thread(new myThread()).start();以后,主线程结束了,那子线程不就成了野线程?

解决方案 »

  1.   

    http://topic.csdn.net/u/20100701/22/e3ad0e48-491c-4aac-8d10-2ccd50978171.html
      

  2.   

    若要在主线程实现同样的效果 , 用定时器做new Thread(new myThread()).start() 执行完了主线程没有结束, 接下来会调用onstart()开始activity,
      

  3.   

    主要是LZ没弄清这个思路 , 更新UI不是一定要多线程的 ,这个只是根据你自己的需求了。
      

  4.   

      将你的消息放入主线程 looper中, 也就是消息队列, 等待执行就ok了, 可以看下取得主线程looper(消息队列的方法) 我也没去研究, 但觉得是这么做。
      

  5.   

    while (!Thread.currentThread().isInterrupted()) 
    这是一个循环更新ui,放到主线程你会阻塞主线程。去掉循环或者你就只能更新几次ui当然就一闪而过了。
    反问一句,为什么不用线程?呵呵
      

  6.   

      更新UI 不是说一秒更新一次吧, 你还要性能吗, 只有在内部数据变化的时候, 更新ui就可以了, 再说了 , 你发消息, 如果太快, 也会产生冲突,(尤其是存在一些复杂控件的时候) 出现系统异常, 真不知道你怎么想的。
      

  7.   


    LZ理解有误,调用这个函数之后你只是新开了一个线程,并没有说主线程结束了啊,如果主线程结束了,那你的Activity又是如何还在显示的呢,只有调用了 onDestroy()后才能代表主线程已经结束了,看来一开始的生命周期,楼主要复习一下。
    要想在onCreate()后更新UI ,尤其是你想在后台获取数据之类的用来改变UI的话, 在Android中就必须要配合 Handler 和线程来用,因为,如果你一直使主线程等待后台数据,具体时间我模糊了,好象是5秒,那么你将会看见系统会报错,认为主线程已经阻塞,会自动关闭这个线程的
      

  8.   

    之所以用子线程去通知UI,一般都是因为要处理大量数据,这过程会花时间,但是为了避免程序UI处理数据而卡住,才使用子线程去处理数据,然后处理完了通知UI。