、私は(TextViewのために例えばのsetText)非UIスレッドでいくつかのビューのプロパティを変更したい場合は、私はこれらのようなコード記述する必要があります:非UIスレッドがビュープロパティを変更できないのはなぜですか?アンドロイドで
runOnUiThread(new Runnable(){
textView.setText("Hello world");
});
とC#での、私は、デリゲートを使用する必要がありますこれはより複雑である。
なぜ彼ら(フレームワーク)は、私たちが次のような内部コードでこれらのことをするのを助けないのですか?
void setText(string text){
if(isInMainThread()){
//direct set text
}else{
post(new Runnable(){
setText(text);
});
}
}
フローはコーダによって制御する必要があるため非推奨のJavaスレッドの停止方法に似何らかの理由はありますか?
事前に感謝し、私の貧しい英語を許してください。
すべてのUI描画に関連する作業は1スレッドで行われるため、UIを変更するコードをこのスレッドにプッシュする必要があります。それ以外の場合は並行性の問題が発生します – Bhargav
私は同意します。しかし、なぜフレームワークがこれらのexraを実行するのに役立つのではないのですか?メインスレッドでは検出できず、それを記録して、メインスレッドでこれらのことを後で行います。 –