【成功】バイナリデータをWebServiceから渡す・Androidで受け取る

前の日の予想は正解でした(www
方式を変更してなんとか成功。
  
Android

http Get形式でリクエストでファイル名を渡す

↓↓

WebService

取得したファイル名の画像ファイルをfilestreamで読み出し

Image.FromStreamで一旦Imageに。

ImageConverterのConvertToでバイト配列へ変換

↓↓

Android

レスポンスからバイナリデータ取得

xmlへパース

画像データの部分のみ抜き出してbase64でバイト配列に変換

bitomapへ変換
  

ImageViewへセット
  
AndroidでHTTP通信でバイナリデータを受け取る方法は
こちらを参考にさせていただきました。
  
C#WebServiceからバイト配列を渡す場合、base64で渡ってきます。
なのでAndroid側でバイト配列に変換する際はbase64で変換する必要があります。(アフォなので普通にutf-8とかでやろうとしてました・・・)
  
今回はOSのバージョンが2.1で作成しているため、2.2以降対応してる標準のbase64は使えないそうです。

なのでこちらで紹介されていたBase64クラスを利用させていただきました。

これで画像データもWebサーバーのフォルダ直接ダウンロードでなく、WebServiceを通してデータが取得できるようになりました(w

ProgressDialog&asynctaskを使ってバックグラウンド処理してから新しい画面に移動する

これもなかなか上手くいきませんでした。
アラートダイアログをカスタマイズしたときも似た様な感じでエラーになってましたが・・・。
  
やりたかった処理。

ProgressDialog(ぐるぐる回るタイプ)を表示

WebServiceを使ってデータ検索

検索処理終了後、ProgressDialogを終了

検索結果を表示する画面を表示(画面移動)
  

ProgressDialogを表示中、別スレッドで本処理(この場合検索処理)を行います。

最初はこちらを参考に実装してみました。
  
途中までは上手くいくのですが、handleMessage内でintentを使って別画面に移動しようとするとエラーになります(;><)
  
どうしても解決できないので今度はasynctaskを使ってbackGround処理をするクラスを作成。
こちらのサイトを参考にしました。
  
onPostExecuteでやはり画面移動しようとするとエラー・・・。
  
こりゃあ別スレッドに対して現在表示中のActivityを渡すとダメなのかな??
と思いcallBackを作成してasynctaskに引き渡してみました。
  
今度参考にさせていただいたサイトはこちら

callBackで処理が戻ってきたときのthisは間違いなく表示中の画面のActivityのハズ。
  
そしてcallback内で画面移動するように実装したら、
おお、上手く画面移動ができました!!(゚∀゚)
  
しかし何故別スレッドに渡したActivityからだとうまく画面遷移ができないんでしょうねえ????
そこは解決できませんでした・・・(´・ω・`)