刺身の上にたんぽぽ乗せる日記スマートフォン用の表示で見る刺身の上にたんぽぽ乗せる日記プログラミングしたり、自販機の下に落ちてる小銭を集めたりしてますこの広告は、90日以上更新していないブログに表示しています。android2chandroidではUIコンポーネントの状態の変更をUIスレッドでしかできないため、通信処理が多い2chビューワだと、非同期呼び出しがちらほら出て来る。resultをインスタンス変数として保持すればupdateUIの呼び出しを無名クラスからもできるけど、メソッド間での引数のためにメンバを増やすのはあまりにもエレガンスに欠ける。そこで少し違うバージョンを書いてみた。}).start();}若干マシになったものの、やっぱりまだうざい。可変長引数とリフレクション使うことにした。SomeObject).runOnUIThread(result);}AsyncMethodCreator.getMethodでインスタンスと呼び出す関数を保持している別クラスのオブジェクトを返す。その別クラスのrunOnNewThread/runOnUIThreadでそれぞれ対応したスレッドで指定したメソッドと引数を実行する。して、可読性が上がって来たけど、Stringで関数名を参照するところにエレガンスがない。this.updateUI.nameとかで関数名がとれたり、this.updateUIでMethodのインスタンスがとれれば苦労しないわけですが、冷静に考えると、両方とも構文的にサポートされていないっぽいことに気付いた。Overkillのような気もするけど、InvocationHandlerを使って実装することにした。}}確かこんな感じだった気がする。AsyncInvoker.asyncとAsyncInvoker.uiはAsyncMethodsを実装したProxyオブジェクトで、呼び出した関数をInvocationHandlerで拾って、対応した別スレッドで実行する感じの実装。無駄にリソース喰う気もするけど、若干奇麗な作りにはなると思う。別にランタイムにできなくてもいいから、クラス名.nameとか関数名.nameとかをコンパイラがサポートしてくれりゃあこんなこといらないんだけどなぁ。virtualenv設定メモサーバがまた起動しなくなってた月別アーカイブはてなブログをはじめよう!kudzuさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。