私のアプリでは、マップ上のトラックとウェイポイントを表示するためにgpxとkmlファイルをインポートします。この操作のために、私は約5つの方法を使用します。 exfilechoserでいくつかの長いgpx/kmlトラックをインポートしようとしない限り、すべてうまく動作します。 画面は数秒間黒くなり、logcatにはスキップされたフレーム(> 600)と表示されます。 これらのUIの計算方法を教えてください。 または、どのようにAsyncTaskを約5つのメソッドで使用できますか?これは可能ですか?重い計算を行ういくつかの方法を扱うにはどうすればよいですか?
答えて
あなたの質問を見ると、handler
とjava normal multi threading concept
を使用することをお勧めします。 私はAsyntask
がバックグラウンドで長時間実行されるタスクを実行するための非常に良いアプローチだとは思わない。
サーバー側で計算するとモバイルサイトのオーバーヘッドを減らすことができます
お返事ありがとうございます!私はそれをテストします。 – stan210
いくつかの方法があります。
非同期に計算します。 Android SDKは、問題を非同期的に解決するために
Handler, IntentSevice, AsyncTask, HandlerThread
を提供します。ちなみに、重心を解くマルチスレッドを使うことが推奨されています。サーバに計算を許可します。モバイルデバイスは計算には適していません。計算は電力を消費し、アプリのパフォーマンスに影響します。
私はこの目的のために設計されたServiceを使用するべきだと思います。ドキュメント内には次のように書かれています。
サービスは、バックグラウンドで長時間実行する 操作を実行できるアプリケーションコンポーネントです。
サービスで新しいスレッドを作成することについて覚えておく必要があります。
注意:サービスは、独自のスレッドを作成しません。そのホストプロセス- サービスのメインスレッドで実行され、(特に指定しない限り)別の プロセスで実行されません。つまり、 サービスがCPU集約的な作業またはブロック操作 (MP3再生やネットワーキングなど)を行う場合は、サービス内に新しいスレッド を作成してその作業を行う必要があります。
返信いただきありがとうございます!私はすでにこの問題をサービスで解決しようとしました。しかし、画面はまだ黒くなります。私はサービスを利用しました。またはIntentServiceを使用する必要がありますか?しかし、それがうまくいけば、私はもう一度それを試してみるでしょう。 – stan210
スレッドを開始しましたか?サービスはデフォルトでメインスレッドで実行されます。 "注意:サービスはホストプロセスのメインスレッドで実行されます。サービスは独自のスレッドを作成せず、別のプロセスで実行されません(特に指定しない限り)。 (MP3再生やネットワーキングのような)CPUを大量に使用する作業やブロッキング操作を行うには、その作業のためにサービス内に新しいスレッドを作成する必要があります。 –
- 1. Python Gtkで計算を行うにはどうすればよいですか?
- 2. いくつかの条件でタイムスタンプの差を計算するにはどうすればよいですか?
- 3. 計算機のようにMac OS Xスポットライトプラグインを書くにはどうすればいいですか?
- 4. グループ合計を計算するにはどうすればよいですか?
- 5. EXIFオリエンテーションデータを尊重しないAndroidデバイスを扱うにはどうすればよいですか?
- 6. Mysqlなどのデータを扱うにはどうすればいいですか?
- 7. グラフのエントロピーを計算するにはどうすればよいですか?
- 8. ページテーブルのサイズを計算するにはどうすればよいですか?
- 9. アンドロイドアプリのバックグラウンドで計算を正しく実行するにはどうすればよいですか?
- 10. エリクサーでファイルチェックサムを計算するにはどうすればよいですか?
- 11. GridViewで列を計算するにはどうすればよいですか?
- 12. Hbaseは重複レコードをどのように扱いますか?
- 13. PHPでタイムゾーンの差異計算をどのように扱いますか?
- 14. Socket.io:2つのウィンドウを開く認証済みクライアントを扱うにはどうすればよいですか?
- 15. PHPでこの計算を行うにはどうすればよいですか?
- 16. Wit.aiにロールで数学計算を行うにはどうすればよいですか?
- 17. 使い捨てオブジェクトを扱うにはどうすればいいですか?
- 18. いくつかの行をすばやくテストするにはどうすればよいですか?
- 19. Swiftで空のオブジェクトを扱うにはどうすればいいですか?
- 20. キャンバスベースのアプリケーションでテンキーパッドを扱うにはどうすればいいですか?
- 21. 迷惑メールファイル内で即座に計算を行うにはどうすればいいですか?
- 22. Qtアプリケーションで「プロジェクトファイル」を扱うにはどうすればよいですか?
- 23. ゲームのサウンドのコレクションを扱うにはどうすればいいですか?
- 24. sum ++を使わずに合計を正しく計算するにはどうすればいいですか?
- 25. ギャラリーアンドロイドのポジションを扱うにはどうすればいいですか?
- 26. 複数のListenableFuturesを扱うにはどうすればいいですか? (Spring)
- 27. 総額に基づいて行のパーセンテージを計算するにはどうすればよいですか?
- 28. MySQLで重複行を挿入しないようにするにはどうすればよいですか?
- 29. SHAを並列計算するにはどうすればいいですか?
- 30. ダイジェストを計算するにはどうすればいいですか?
使用AsyncTaskそれがバックグラウンドですべてのプロセスを実行すると、uは作業が行われたときに呼び出さonPostExecuteメソッドを持っている – thunder413
あなたがスレッドを使用する必要があり、私はあなたが書いたように、それはasynctaskを使用してしまうの良いソリューションを推測します。はい、5つの異なるasynctaskを使用できますが、それらは非同期になるので、作業したデータをどのように処理するかを勉強しなければならないことに注意してください。 – michoprogrammer
それは難しいかもしれません(彼らが計算を整列させるために)。多分私は何かを考え出すでしょう。あなたの返信ありがとう! – stan210