質問:私はActivity.findViewById
をUIスレッドでのみ呼び出す必要がありますか?findviewbyidをUIスレッドで呼び出す必要がありますか?
私が求めている理由は、それを任意のスレッドから呼び出すことであり、完璧に動作します。 しかし、私はユーザーのうちの1人から例外を受け取りました。findViewById
はNPE
のどこかで、findViewTraversal
で失敗します。
だから、その原因になるのでしょうか?
質問:私はActivity.findViewById
をUIスレッドでのみ呼び出す必要がありますか?findviewbyidをUIスレッドで呼び出す必要がありますか?
私が求めている理由は、それを任意のスレッドから呼び出すことであり、完璧に動作します。 しかし、私はユーザーのうちの1人から例外を受け取りました。findViewById
はNPE
のどこかで、findViewTraversal
で失敗します。
だから、その原因になるのでしょうか?
Android UIツールキットはスレッドセーフではなく、常にUIスレッドで操作する必要があります。
スレッドセーフではないため、別のスレッドでAPIを使用するとどうなるかわかりません。それはうまくいくかもしれない、それはうまくいかないかもしれません、ほとんどの時間に働くかもしれない、うまくいかないかもしれない、またはそれは動作し、他のものを壊すかもしれません。あなたは分からない。
したがって、正しいアプリケーションが必要な場合は、UIスレッドでこれを行う必要があります。
ありがとう、UIスレッドで移動するのが適切なようです。 – Andy
ユーザーインターフェイスが変更されたり破棄されたりすると、スレッドにエラーが発生します。あなたは、UIスレッドのこのようなUI関数を使用する必要があります – Spidy