我有很多任务,我应该使用多线程来处理它们,什么是最好的解决方案,?意思是我可以使用最少数量的线程但是以最快的时间处理最多的任务。
答案 0 :(得分:1)
我认为AsyncTask
对您有用。你可以在这个很好的解释和给出的例子中找到更多关于Android - AsyncTask的信息。
如果您想使用Thread
,那么您必须管理所有主题,并确保not to blocking the UI Thread.
Handler和AsyncTask之间的区别......
1. Handler与应用程序的主线程相关联。它处理和安排 从后台线程发送到app主线程的消息和runnable。
2.AsyncTask提供了一种处理后台线程的简单方法,以便通过耗时的操作来更新UI而不会阻塞它。
答案是两者都可用于从后台线程更新UI,区别在于您的执行场景。您可以考虑使用处理程序来发布延迟消息或按特定顺序向 MessageQueue 发送消息。
如果你想以一种简单方便的方式在app主线程和后台线程之间交换参数(从而更新UI),你可以考虑使用AsyncTask。
Example for Threads, Handlers and AsyncTask in Android
感谢。
答案 1 :(得分:0)
请查看服务和AsyncTask。它比处理纯线程更好,除非你在NDK并使用pthreads。
答案 2 :(得分:0)
Android中有关多线程的好帖子可以在这里找到:
http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html
答案 3 :(得分:0)
在android中有很多方法可以做多线程。
我喜欢使用handlerThread,它为您提供了所有工具,让您的UI可以与您的线程进行通信。 例如:
public class MyThread extends HandlerThread implements Callback
{
public MyThread()
{
super(ThreadDP.class.getSimpleName(), Process.THREAD_PRIORITY_DISPLAY);
this.start();
}
@Override
protected void onLooperPrepared()
{
super.onLooperPrepared();
}
@Override
public boolean handleMessage(Message msg) {
switch (msg.what)
{
case 1 :
this.doA();
return true;
//Message 2 let's call doB()
case 2 :
this.doB();
return true;
default:
return false;
}
}
//Implement doA() and doB()
}
这个简单的线程可以处理您的活动或其他线程发送的消息。手柄系统非常快(我可以毫无问题地获得25fps mjpeg)。
可能有更好的解决方案(我不是专家),但我可以同时获得5个线程接收,在网络上发送(和处理)数据,就像魅力一样。