2

こんにちは私はこのクエリを実行するたびにこのメッセージをログに記録しています。しかし、クエリはバックグラウンドスレッドのみで実行されており、テーブルには500行もありません。また、常に限界値100を適用します。 単にリンクを張っておき、この質問にすでに回答しているとは限りません。バックグラウンドスレッドで操作が実行されていても、メインスレッドであまりにも多くの作業を行っているアプリケーションが表示されます

私はこれに関して多くの回答を読んでいます。しかしそれでも私の問題は解決しなかった。誰か私の問題に私に適切な理由や解決策を与えることができますか?

振付師:98フレームをスキップ!アプリケーションがメインスレッドであまりにも多くの作業を行っている可能性があります。

以下は私のrunnableクラスです。新しいThread(new MessageLoaderThread(limit))のように呼びます。私はすでに多くの質問を読んでいることを知っている

private class MessageLoaderThread implements Runnable { 

     int limit; 
     ArrayList<MESSAGE_HEADER> result; 

     public MessageLoaderThread(int limit) { 
      this.limit = limit; 
     } 

     @Override 
     public void run() { 

      showProgressRing(true); 

      result = Helper.getRows("Select * from TABLE_NAME LIMIT "+limit); 

        if (result != null) { 
         int count = result.size(); 

         if (count > 0) { 
          firstVisibleMessageSeqId = result.get(0).getsequenceId(); 
          lastVisibleMessageSeqId = result.get(count - 1).getsequenceId(); 
         } 
        } 

      if (result != null && result.size() > 0) { 
       updateAdapter(result); 
      } 
      showProgressRing(false); 
     } 
    } 

おかげ

+0

すぐに問題が発生することはありません。完全な[mcve]が必要になるでしょう。 – Knossos

+0

"updateAdapter(result)"内であまりにも多くの作業をしている可能性があります_ –

答えて

0

AsyncTaskを使用しようとしましたか? Androidのマルチスレッドのデフォルトです。

スレッド内でアダプタを更新しないようにしてください。いくつかのビューを変更すると、Androidはいくつかのアニメーションを実行します。スレッドが終了するのを待ってから、ビューを更新してください。

+0

私はasynctaskを試しました。 – ImGenie

+0

バックグラウンドスレッドでView操作を呼び出さないでください。スレッドの終了後にアダプタを更新してください。 [postExecute](http://developer.android.com/reference/android/os/AsyncTask.html#onPostExecute%28Result%29)のアダプタを更新してみてください – ikkarion

0

AsyncTaskを使用した後に警告が表示される場合は、操作がまだ重くて長時間実行されている可能性があります。スレッドとハンドラ 周りのヘルパークラスになるように設計されてAsyncTaskdocumentation

AsyncTaskで提案し、一般的なスレッド化フレームワークを構成しないようjava.util.concurrentから他のAPIを使用してみてください。 AsyncTasks は、短時間の操作(理想的には、 の数秒)に使用するのが理想的です。長時間スレッドを実行し続ける必要がある場合は、 java.utilで提供されるさまざまなAPIを使用することを強くお勧めします。 Executor、ThreadPoolExecutor、 FutureTaskなどの並行パッケージ

+0

ありがとう:) @AndroidMechanic私は試してみましょう知っている。 – ImGenie

関連する問題