スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Tag:スポンサー広告 

【Android】AsyncTaskで失敗したときのリトライ処理について

新年明けましておめでとうございます。(だいぶ明けてしまいましたね)

Androidアプリを開発する上でAsyncTaskを使って重たい処理を非同期で行うことがある場面があるかと思います。

その上で以下の様なエラーに出会うことがたまにあると思います。



どうやらこのエラーは「スレッドのプールは128個で今128個のスレッドを使っているからコレ以上はスレッドをわけれません」というエラーのようです。

この状態になったらもう一度同じ処理をリトライしてしまいたい。

単純にExceptionだけを拾ってリトライすると、もしかしたら単純に処理内容がやばくて例外起きたのにそのやばい処理をもう一度行うことになってしまいますよね。

つまり



これだとまずいということです。

ではどんな例外を拾えばいいのか調べたところ、RejectedExecutionExceptionという例外をキャッチすれば良さそうです。

処理を書いてみるとこんなところでしょうかね。



こうすると処理による単純な例外なのか、スレッドのpoolによるエラーなのかを判定できそうです。
スポンサーサイト
テーマ : プログラミング
ジャンル : コンピュータ

Tag:Android  Trackback:0 comment:0 

Comment

comment form
(編集・削除用):
管理者にだけ表示を許可
プロフィール

6rats

Author:6rats
こんにちは、ITベンチャーで働くエンジニアです
主に自分の周りで起きた技術的なことをメモとして書き残して行きます。
Android以外にもRuby/Ruby on RailsやFuelPHPなどなどたまにやります。基本的なスタンスとしては興味があるもしくは必要になったらいろんなことにチャレンジします。
最近はiOSアプリ開発を始めています。

購読
follow us in feedly
個人プロダクト

Androidアプリ

Twitterクライアント

Webアプリケーション

EcPriceWatch(Amazon価格の推移を計測、最安値を知らせるサービス)
Google AdSense
ブログ村
にほんブログ村 IT技術ブログへ
にほんブログ村
ブロとも申請フォーム

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。