2017-04-05 8 views
0

私は何百ものレイアウト(TextViewsを持つ線形)のビューを持っています。 テキストビューを使用してリニアを単純に作成し、それを他のLinear(追加したすべてのビューの親)に追加するビューのデータベース(sqlbrite、rxjava、その非同期)をクエリーした後の私のプレゼンタープログラムで多くのビューを追加しているときにUIがフリーズする

100+電話が凍っています。 どうすれば減らすことができますか?私はもちろんUI以外のスレッドでビューを追加することはできません。

+4

[RecyclerView](https://developer.android.com/reference/android/support/v7/widget/RecyclerView.html)を使用しないのはなぜですか? – Kunu

+0

@クヌー私はリサイクルビューを試してみます。結果を投稿します、アドバイスありがとうございます – koowalsky

答えて

1
  1. 最初に、ビューのリストにリサイクラビューを使用する必要があります。あなたはリサイクラービューのViewTypes
  2. と100種類のビューを使用することができます。リサイクルビューを使用しないと主張する場合、少なくともビューの追加にはAsyncTaskを使用することをお勧めします。 AsyncTaskのいくつかのメソッドでは、UIスレッドにアクセスして要素を追加できるためです。
  3. 3番目の可能性はイベントバスです。フラグメント/アクティビティにメソッドを追加し、それをイベントバスに登録します。タグ(Javaタグ)からバックグラウンドで実行させます。 (ビュー)を追加するためにバックグラウンドスレッドから呼び出す

希望の問題を解決したいと思っています。

P.S EventBusは、BroadcastReceiversとほぼ同じライブラリ作業ですが、より多くの機能と効率があります。

+0

私はリサイクラーのビューを試してみます。結果を投稿します、アドバイスありがとう – koowalsky

+0

正直なところ私はそれを期待していませんでしたが、それはもっと良く機能します。ありがとうございました – koowalsky

関連する問題