奇特:子线程的Toast怎么显示不出来?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了奇特:子线程的Toast怎么显示不出来?相关的知识,希望对你有一定的参考价值。

参考技术A 晕,在子线程不能操作任何组件,你调用activity方法里面的runOnUIThread()就可以toast了

子线程怎么不阻塞主线程

参考技术A 可我想主函数不被阻塞,怎么办呢? 还有什么更好的办法么 ?(linux下面和win32的解答都能说下最好了)
------解决方案--------------------------------------------------------如果主线程不需要等待你那个子函数里调用的子线程全部结束,那个子函数里的线程可以以分离状态运行,线程调用pthread_detach(pthread_self())或者C/C++ code pthread_attr_t attr; pthread_attr_init(&attr); pthread_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); pthread_create(&tid, &attr, routine, NULL);
------解决方案--------------------------------------------------------子函数中使用了pthread_join()就自然阻塞了,你要想不阻塞,只有把pthread_join放到函数外面去了。
小菜愚见,仅供参考。
------解决方案--------------------------------------------------------detach或者轮询检测标记后join。
------解决方案--------------------------------------------------------给你借鉴下:
C/C++ code #include #include #include #include volatile LONG g_bCon; void printThread(void* pArg) int i = 0; while(g_bCon) printf("%d\n",i++); void countThread(void* pArg) _beginthread(printThread,0,0); Sleep(1000); g_bCon = 0; int main(int argc, char* argv[]) g_bCon = 1; _beginthread(countThread,0,0); system("pause"); /*这里必须要暂停下*/ return 0;
------解决方案--------------------------------------------------------windows中在主线程退出前必须要用WaitForSingleObject(),不然子线程也会跟着退出
------解决方案--------------------------------------------------------用消息机制
------解决方案--------------------------------------------------------子函数又添加了pthread_join()
这个就会让子函数阻塞等待了,如果想不阻塞等待的话就不能用这个函数了,可以在子函数创建线程时,设置成分离(detach)状态, pthread_detach(thread_id),让线程自己管理自己的后事,自动释放资源等。

以上是关于奇特:子线程的Toast怎么显示不出来?的主要内容,如果未能解决你的问题,请参考以下文章

Android Toast在子线程中为啥无法正常使用

Android子线程进度条不显示的问题

子线程怎么不阻塞主线程

如何使“主线程”等待“子线程”执行结束后再继续执行

主线程创建了子线程,怎么让主线程退出,而子线程仍然运行

QT中UI主窗口如何与子线程相互传递参数