tôi có một asyncTaskProc mà đọc một số thông tin từ một DB và viết nó trên ui ...Android: tại sao tôi gặp phải lỗi AsyncTask này?
mã làm việc perfectcly trên Android 4.0 nhưng không hoạt động trên 2.3 ... đây là mã
MỚI AsyncTask
'public class IceCastPoll kéo dài TimerTask {
public IceCastPoll() {
}
@TargetApi(9)
public void run() {
new AsyncTaskProc().execute();
}
}`
THE thực hiện AsyncTask
@TargetApi(9)
class AsyncTaskProc extends AsyncTask<Void, String, Void> {
List<Stream> streams=null;
@Override
protected void onPostExecute(Void result) {
textSong =(TextView) findViewById(R.id.textViewCurrentSong);
textArtist =(TextView) findViewById(R.id.textViewCurrentArtist);
textTit=(TextView) findViewById(R.id.textViewTit);
textArt=(TextView) findViewById(R.id.TextViewArt);
copertina=(ImageView) findViewById(R.id.imageViewCopertina);
new DownloadImageTask((ImageView) findViewById(R.id.imageViewCopertina)).execute("http://service.uniradiocesena.it/OnAir.jpg");
try {
for (Stream stream: streams) {
try
{
//Thread.sleep(5000);
//textSong.setText((stream.getCurrentSong()));
textArt.setText("Artista:");
textTit.setText("Titolo:");
StringTokenizer tokens = new StringTokenizer(stream.getCurrentSong(), "-");
String first = tokens.nextToken();
String second = tokens.nextToken();
textSong.setText(first);
textArtist.setText(second);
} catch (Exception e) {
//Thread.sleep(5000);
textSong.setText((stream.getCurrentSong()));
textArt.setText("Rotazione:");
textTit.setText("");
textArtist.setText("");
}
}
} catch (Exception e) {
//Toast.makeText(getApplicationContext(),e.toString(), Toast.LENGTH_SHORT).show();
}
}
@Override
protected Void doInBackground(Void... unused) {
Scraper scraper = new IceCastScraper();
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
try {
streams = scraper.scrape(new URI("http://r35798.ovh.net:8000/"));
} catch (ScrapeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
//Toast.makeText(getApplicationContext(),e.toString(), Toast.LENGTH_LONG).show();
} catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
//Toast.makeText(getApplicationContext(),e.toString(), Toast.LENGTH_LONG).show();
}
return (null);
}
}`
CÁC LỖI logcat
11-07 11:09:49.729: W/dalvikvm(18983): Exception Ljava/lang/RuntimeException; thrown while initializing Landroid/os/AsyncTask;
11-07 11:09:49.729: W/dalvikvm(18983): threadid=9: thread exiting with uncaught exception (group=0x40018560)
11-07 11:09:49.739: E/AndroidRuntime(18983): FATAL EXCEPTION: Timer-0
11-07 11:09:49.739: E/AndroidRuntime(18983): java.lang.ExceptionInInitializerError
11-07 11:09:49.739: E/AndroidRuntime(18983): at com.example.appuniradiocesena.SwipeyTabsSampleActivity$IceCastPoll.run(SwipeyTabsSampleActivity.java:233)
11-07 11:09:49.739: E/AndroidRuntime(18983): at java.util.Timer$TimerImpl.run(Timer.java:284)
11-07 11:09:49.739: E/AndroidRuntime(18983): Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
11-07 11:09:49.739: E/AndroidRuntime(18983): at android.os.Handler.<init>(Handler.java:121)
11-07 11:09:49.739: E/AndroidRuntime(18983): at android.os.AsyncTask$InternalHandler.<init>(AsyncTask.java:421)
11-07 11:09:49.739: E/AndroidRuntime(18983): at android.os.AsyncTask$InternalHandler.<init>(AsyncTask.java:421)
11-07 11:09:49.739: E/AndroidRuntime(18983): at android.os.AsyncTask.<clinit>(AsyncTask.java:152)
11-07 11:09:49.739: E/AndroidRuntime(18983): ... 2 more
Bất kỳ đề nghị nó sẽ được rất rất apreciated!
và sry cho những sai lầm tiếng anh: D
tại sao bạn muốn thực hiện asynctask từ chuỗi? – njzk2