大家都知道,当您使用数据库操作时,应该在另一个Thread
中执行此操作。但是,我不明白的是,当你插入一个项目时,或者当用户打开Activity
或Fragment
例如数据刚刚从数据库加载时,用户将等待加载结束任何内容时,它才真正需要。 也许它甚至会在创建新线程时停止应用程序。 那么你认为创建新线程是“必须”呢?Android另一个线程
-4
A
回答
1
一个线程应该用在一个长时间运行的进程中,它会阻止用户界面的更新。如果超过一秒或两秒钟,您可能需要将其放入后台线程中,并通过对话框或微调器或其他方式通知用户。如果您锁定UI线程超过5秒钟,系统将提示用户执行杀死或等待选项。
1
要有良好的用户体验,重型作品应该在另一个线程中运行,这样就没有任何滞后或阻塞,用户体验更好。
创建新线程所用的时间比执行查询或http请求或其他繁重工作所花费的时间少很多。也许在这个时间你的手机短,但低级别的手机可能需要更多的时间。 5秒之后,Android向用户显示一个警告,询问用户是否想要杀死该应用或等待,但这并不好。
另一点,用户必须等待数据才能使用它,但如果您在主线程中执行请求,视图将被阻止,如果在另一个线程中执行该视图,则视图很流畅,您可以显示简单的进度酒吧,如果用户想返回应用程序仍然响应。
我可以理解,发送邮件beetwen线程是不容易喜欢做在主线程,但如果你使用公交车,像奥托总线(http://square.github.io/otto/),并以这种方式
扩展总线类公共类AndroidBus扩展总线{
private final Handler mainThread = new Handler(Looper.getMainLooper());
@Override
public void post(final Object event) {
if (Looper.myLooper() == Looper.getMainLooper()) {
super.post(event);
} else {
mainThread.post(new Runnable() {
@Override
public void run() {
post(event);
}
});
}
}
}
这样ü可以伊斯利发送消息beetwen线程
相关问题
- 1. android UI从另一个线程更改
- 2. 从另一个线程操作线程
- 3. 从另一个线程运行线程
- 4. PlaySound在另一个线程
- 5. 处置另一个线程
- 6. 从另一个线程DoDragDrop()
- 7. 在另一个线程
- 8. C对另一个线程
- 9. HttpWebRequests从另一个线程
- 10. 从另一个线程
- 11. 从另一个线程
- 12. 使用另一个线程
- 13. 杀从另一个线程
- 14. 另一个线程WPF
- 15. 与另一个线程
- 16. 从另一个线程
- 17. 等待另一个线程
- 18. 被另一个线程
- 19. scrollToRowAtIndexPath从另一个线程
- 20. Android视频查看另一个线程&问题与Android 2.1
- 21. 调用从一个线程到另一个线程执行另一个线程的方法
- 22. Python:在一个线程中停止另一个线程从另一个线程结束
- 23. 一个线程可以中断另一个线程吗?
- 24. Python,是否适合一个线程产生另一个线程
- 25. 如何让一个线程等待另一个线程?
- 26. 为什么一个线程会中断另一个线程
- 27. 一个线程如何在另一个线程中被杀死
- 28. shared_from_this()从另一个线程(一个成员线程函数)
- 29. 使用另一个线程终止一个线程(循环)
- 30. 有一个线程启动另一个线程,然后死
如果您的主线程在其他地方仍处于忙碌状态,并且不会为新的UI刷新屏幕提供服务,UI将显示为口吃。此外,如果android检测到UI冻结太多(比如超过5秒),系统将显示ANR(app not responding)错误。所以,让主线程免费用于UI服务。 –