new的Runnable为什么不是在主线程里运行的?

中才德创 2015-11-25 02:08:13
一直以为,new Runnable一定是开了个子线程。刚写了个小demo测试,发现卡住了主UI的显示,说明并非开了个线程。这是什么回事?
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EventBus.getDefault().register(this);
handler.post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
AvcLog.printV(TAG, "Sleep is called before");
try {
Thread.sleep(30000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
AvcLog.printV(TAG, "Sleep is called later");
}
});
}
...全文
528 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
柒加伊 2015-12-04
  • 打赏
  • 举报
回复
protected void onCreate(Bundle savedInstanceState) 方法本身就是主线程, 你在主线程里面调用handle那不还是主线程么 ... =.=!
huangxiaohu_coder 2015-12-01
  • 打赏
  • 举报
回复
正如楼上的所说,Runable只是给你接口让你实现工作线程的工作事务,然后附加到你new thread的线程上或post的线程中,其本身并不会创建线程
csdn_faith 2015-11-30
  • 打赏
  • 举报
回复
为什么new Runnable就是开了一个线程,它只是一个接口而已,楼主惯性思维! 先了解下Android Framework layer的消息机制:起点从ActivityThread.java main方法中,启动一个Loop,Loop中包含一个MessageQueue,不断从里面取element, 再看发送,就是将handler设置成为Message.target,将Runnable设置为Message.callback的绑定起来,以便MessageQueue处理。最后走到Handler.dispatchMessage(), if (msg.callback != null) { handleCallback(msg); } else { if (mCallback != null) { if (mCallback.handleMessage(msg)) { return; } } handleMessage(msg); } 最后走到message.callback.run(); 其实跟线程半毛钱关系都没有,只是一个Runnable的匿名内部类。 想要提高,就看看framework layer代码,甚至native layer,不是只写写界面,玩玩四大组件就完事!
jklwan 2015-11-26
  • 打赏
  • 举报
回复
这个线程其实是在UI线程之内运行的,并没有新建线程。 新建一个线程用 Thread thread = new Thread(); thread.start(); 参考资料http://blog.sina.com.cn/s/blog_77c6324101016jp8.html
中才德创 2015-11-26
  • 打赏
  • 举报
回复
为什么大家说法不一致啊?
wei220000 2015-11-25
  • 打赏
  • 举报
回复
handler只是一个回调,用来处理主线程,Runnable总是新建一个线程,那么肯定是子线程。卡住的关键是handler的post,他本身的作用是阻塞handler所在线程啊。runnable不结束,handler就一直post。
中才德创 2015-11-25
  • 打赏
  • 举报
回复
那是不是可以这么说:handler在UI线程,handler.post(new Runnable()所发出的,一定也在UI线程?
sagittarius1988 2015-11-25
  • 打赏
  • 举报
回复
因为handler也是在UI线程里
内容概要:本文围绕城市场景下的无人机三维路径规划问题,提出了一种新颖的多目标粒子群优化算法(NMOPSO),旨在解决高维复杂环境中路径规划面临的多重挑战。研究聚焦于导航变量的多目标优化,构建了一个包含路径长度、飞行安全性、能量消耗等多个相互冲突目标的优化模型,并采用改进的粒子群算法进行高效搜索,最终获得一组Pareto最优解集,为实际决策提供多样化路径选择方案。该方法结合Matlab代码实现,详细阐述了算法的设计机制、数学建模流程及仿真验证过程,充分展示了其在密集城市建筑环境中有效规避障碍物、满足飞行动力学约束并实现多目标权衡的能力,具有较强的工程应用价值。; 适合人群:具备一定优化算法理论基础和Matlab编程能力,从事无人机路径规划、智能交通系统、自动化控制、人工智能应用等方向研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于城市环境中的无人机物流配送、巡检监控、应急救援等实际任务的三维路径规划;②为高维、非线性、多约束的多目标优化问题提供有效的算法设计思路与改进参考;③通过Matlab仿真平台复现算法,进一步开展性能测试、参数调优与算法对比研究,推动相关领域的技术创新。; 阅读建议:此资源强调算法原理与工程实践的深度融合,建议读者重点研读目标函数的构建方式、约束条件的处理策略以及NMOPSO算法的核心改进机制,并务必动手运行和调试所提供的Matlab代码,以深入理解算法在三维空间路径优化中的具体实现细节与实际表现。

80,488

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧