ここで何が起こっているかを説明します。runOnUiThread() メソッドを使用して、そのクラスが別の電話からメッセージを受信したときに別のクラスから Image View を変更しています。mainclass.runOnUiThread(new Runnable...) などを使って呼び出しています。アプリケーションを初めて実行したときは機能しますが、戻るボタンを押してアプリケーションを終了し、アプリケーションを再度起動すると、イメージ ビューが更新されなくなります。私が取ったログは、すべて問題なく実行されていることを示していますが、Image View は変わりません。エラーは発生せず、アプリケーションを実行してもクラッシュしません。画像ビューが更新されないだけです。何がこれを引き起こしているのでしょうか?
編集*:これは、アクティビティを拡張しないクラスでimageViewを変更するために実際に使用しているものです
peerActivity.runOnUiThread(
new Runnable(){
@Override
public void run() {
Log.v("Thread@", "Thread is running");
Log.v("Thread@2", decodedImage.toString());
// TODO Auto-generated method stub
peerActivity.ivPhoto.setImageBitmap(decodedImage);
Log.v("Thread@3", "Past UI Change");
}
});
ここで、peerActivity は他のクラス参照を保持し、ivPHoto はイメージ ビューです。私がする必要があると思うのは、プログラムが閉じたときにそのスレッドを強制終了する方法を見つけることです (プログラム マネージャーに入ると、[強制終了] ボタンがまだ使用可能です)。これを行う方法はありますか?
Edit2 *: UI スレッドで作業するためにさまざまなアプローチを試してみましたが、すべて同じ結果が得られました: プログラムは最初の実行時は完全に動作しますが、戻るボタンを押して閉じてから再度開くと、その場合、イメージ ビューは更新されなくなります。アプリを強制終了すると、アプリを閉じて再度開くまで正常に動作します。