この答えが実際に正しいとは思いません。
ドキュメントがインスタンス化と読み込みを別々にリストすることは、それらが実際に同じである場合、意味がありません。この発言信じてる
AsyncTask クラスを UI スレッドにロードする必要があります。
Java Class Loadingを参照しています。つまり、AsyncTask
クラス自体をメイン スレッドにロードする必要があります。Jelly Bean (またはそれ以降) では、これは自動です。ただし、古いバージョンの Android では、このクラスが別のスレッドに読み込まれる可能性があり、問題が発生する可能性があります。
詳細については、この Google ディスカッションを参照してください。基本的に、 が間違った (メインではない) スレッドに最初にロードさIntentService
れる原因となる条件 (たとえば、 を使用するコード) があります。AsyncTask
Jelly Bean より前の最も簡単な修正方法は、次のようなものを使用することです。
Class.forName("android.os.AsyncTask");
アプリケーションのonCreate() メソッドで、必要なときにクラスのロードを強制的に実行します。
インスタンスを作成するAsyncTask
ことは、おそらくあなたが思っていることです...インスタンス化します:
MyAsyncTask task = new MyAsyncTask();
これもメインスレッドで実行する必要があります。