2012-10-30 11 views
5

私は、タイマを使用してAsyncTaskを5〜10秒ごとに呼び出すAndroidアプリケーションを使用しています(java.util.Timerとjavaを使用)。 util.TimerTask)。 AsyncTaskは、Amazon AWS S3データベースから画像データを取得し、メインUIアクティビティ用のImageViewをロードします。Androidエラー:「epollインスタンスを作成できませんでした」または「ウェイクパイプを作成できませんでした」

これは1〜2時間は正常に動作しますが、その後はわかりにくいエラーメッセージが表示され、アプリが強制終了されます。エラーメッセージは、「ルーパー」から来ているとどちらかと言う:

Could not create epoll instance. errno=24 

または

Could not create wake pipe 
ウェブ上の検索がファイル記述子とは何かを持っていることが問題を示しているようだ

(あまりにも多くのファイルを開い記述子?)。私はコードを読みましたが、ファイル、ストリーム、または接続が閉じられていない場所は表示されません。アプリが殺された場合

、logcatは言うAndroidRuntimeからのメッセージました:誰もがこれらのメッセージについての手掛かり、またはどのように修正するに

FATAL EXCEPTION: main 

持っていますか?ありがとうございました!

+0

いくつかのコードを投稿してください。 – Wug

+0

多くのコードがあり、どの部分がエラーの原因になっているのかわかりません。私はほとんどこれのようなエラーメッセージを引き起こしているかもしれないものについての手がかりを探しています。ありがとう。 – gcl1

+0

私はインターネットがファイル記述子について正しいと思って、タイマーが呼び出す部分を投稿します。 – Wug

答えて

0

追加情報:次のコードはすべてフラグメントにあります。ここで

は、タイマーを起動するコードです:ここでは

slideTimer = new Timer(); 
    slideTimer.schedule(new TimerTask() {   
     @Override 
     public void run() { 
      timerMethod(); 
     } 
    }, 0, 5000); 

はタイマーによって呼び出されるメソッドです:

private void timerMethod() 
{ 
    Activity activity = getActivity(); 

    if (activity != null) 
     activity.runOnUiThread(timerTick); 
} 

そして、ここでの仕事はロードAsyncTaskを経由して(行って取得する場所ですリモートで保存されたfileNameからのimageView):

final Runnable timerTick = new Runnable() { 
    public void run() { 

    MyAsyncTask task = new MyAsyncTask(imageView); 
    task.execute(fileName); 
}; 
-1

アラームが発生しすぎてタスクが早すぎます。

私のコードを変更して、メソッドの平均実行時間(ちょっと余分な時間を加えたもの)後に再び実行されるアラームにアラームが追加されるように修正しました。実行を終了するよりもすばやくタスクを追加すると、最終的にエラーをスローするルーパがいっぱいになります。

Looperは基本的に私の理解からスレッドが実行するもののキューです。

0

メモリリークの可能性があります。これを作成するコードの正確な部分を検出するには、Leakcanaryを使用します。

関連する問題