私は多くのタスクを持っていますが、それらを処理するにはマルチスレッドを使用すべきです、最良のソリューションは何ですか?私は使用できますスレッドの数は最小ですが、時間。アンドロイドについてマルチスレッドプロセス
答えて
私はAsyncTask
があなたに役立つと思います。あなたはこの良い説明と例の中で、それについての詳細をAndroid - AsyncTaskで見つけることができます。
そして、あなたはThread
を使用する場合、あなたはすべてのスレッドを管理する必要があり、また、ハンドラとAsyncTaskの違い
not to blocking the UI Thread.
について確認してください...
1.ハンドラが関連付けられていますアプリケーションの主なスレッドと一緒に。それは、 のメッセージとランナブルをバックグラウンドスレッドからアプリのメインスレッドに送信し、スケジュールします。
2.AsyncTaskは、時間のかかる操作でUIを更新せずにUIを更新するために、バックグラウンドスレッドを処理する簡単な方法を提供します。
答えは、どちらもバックグラウンドスレッドからUIを更新するために使用できますが、その違いは実行シナリオにあります。遅延したメッセージを投稿するか、特定の順序でMessageQueueにメッセージを送信するハンドラを使用することを検討することができます。
アプリのメインスレッドとバックグラウンドスレッドの間でパラメータを交換(つまりUIを更新)したい場合は、AsyncTaskの使用を検討してください。
Example for Threads, Handlers and AsyncTask in Android。
ありがとうございました。
サービスとAsyncTaskを同じように見てください。あなたがNDKでpthreadを使っていない限り、純粋なスレッドを扱うよりも優れています。
私はhandleThraedを使いたいです。 – farmer
のAndroidにおけるマルチスレッドの良いポストはここで見つけることができます:
http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html
アンドロイドでのマルチスレッド化を行うために多くの方法があります。
私は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つの同時スレッド受信、ネットワーク上のデータを送信して魅力的に動作させることができます。
- 1. フォーク/マルチスレッドプロセス| Bash
- 2. アンドロイドSMSポートについて
- 3. Pythonでのマルチスレッドプロセスのログ
- 4. アンドロイドについて、AccessibilityServiceの使い方
- 5. マルチスレッドプロセスを視覚化するには?
- 6. アンドロイド・エクリプスについての確認
- 7. アンドロイドの起動モードについて「singleTask」
- 8. マルチスレッドプロセスへの接続の簡略化
- 9. アンドロイド:プロセスを経由してリモートサービスの通信について
- 10. 困ったときはアンドロイドの扱いについて
- 11. アンドロイド:Androidユニットテストについての新しい質問?
- 12. 独立したマルチスレッドプロセスは同時にブロックします
- 13. アンドロイドのC2DMサーバーでのGmail IDの使用について
- 14. についてアンドロイドの意図の行動
- 15. についてアンドロイドDrawable getBounds return Rect(0、0 - 0、0)
- 16. アンドロイドのURLからのダウンロードイメージについて
- 17. アンドロイドで地図を表示することについて
- 18. アンドロイド開発ツール(ADT)の場所について
- 19. アンドロイドのDSLRへのUSBホスティングについて
- 20. アンドロイドが眠りにつく!
- 21. 翻訳されていない文字列を見つけるには? (アンドロイド)
- 22. アンドロイド:クリック可能なビュー要素に枠がついていませんか?
- 23. アンドロイド - それは私は2つのアプリケーションを持っている
- 24. アンドロイド:私はこのコードを持っている2つのアクティビティ
- 25. 2つの動画とアンドロイドを実行しています
- 26. つの指ズーム+私はチュートリアルに基づいてアンドロイドのズームコントロールを開発したアンドロイド
- 27. 写真に写っているアンドロイド
- 28. についてapp.listen()コールバックについて
- 29. アンドロイドHttpResponseはいつも呼び出されて二度目に死ぬ
- 30. はアンドロイドの取り付けSDカードについてのヘルプが必要です
AsyncTaskはあなたを助けます。 –