Samsung Galaxy S3(4.1.1)でAsyncTaskクラスを実行すると、完全に正常に実行されますが、HTC Android(2.3.4)で実行すると、以下のエラーが発生します。ここでの問題は何ですか?
これがクラスです。
public class enemyHandler extends AsyncTask<String, Integer, String>
{
@Override
protected String doInBackground(String... arg0) {
if(System.currentTimeMillis() - lastSpawn >= 2000)
{
Enemy x = new Enemy(SCREEN_WIDTH, SCREEN_HEIGHT, enemy.getHeight());
enemies.add(x);
lastSpawn = System.currentTimeMillis();
}
for(int i = 0; i < enemies.size(); i++)
{
Enemy tempE = enemies.get(i);
if(tempE.x <= 0 - enemy.getWidth())
enemies.remove(tempE);
}
return null;
}
}
Logcat出力:
03-14 18:04:53.656: E/AndroidRuntime(4279): FATAL EXCEPTION: Thread-12
03-14 18:04:53.656: E/AndroidRuntime(4279): java.lang.ExceptionInInitializerError
03-14 18:04:53.656: E/AndroidRuntime(4279): at com.jister13.plane.Main$SView.run(Main.java:188)
03-14 18:04:53.656: E/AndroidRuntime(4279): at java.lang.Thread.run(Thread.java:1027)
03-14 18:04:53.656: E/AndroidRuntime(4279): Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
03-14 18:04:53.656: E/AndroidRuntime(4279): at android.os.Handler.<init>(Handler.java:121)
03-14 18:04:53.656: E/AndroidRuntime(4279): at android.os.AsyncTask$InternalHandler.<init>(AsyncTask.java:421)
03-14 18:04:53.656: E/AndroidRuntime(4279): at android.os.AsyncTask$InternalHandler.<init>(AsyncTask.java:421)
03-14 18:04:53.656: E/AndroidRuntime(4279): at android.os.AsyncTask.<clinit>(AsyncTask.java:152)
03-14 18:04:53.656: E/AndroidRuntime(4279): ... 2 more
解決:
私は自分の電話でこの問題を解決することができました
AsyncTask().execute("");
onCreate()でクラス自体を作成し、実行したい場所でクラスを呼び出します...