Articles of android asynctask

Android Media Player:开始调用状态4错误(-38,0)

这是用于从其他类动态获取文件名(.mp3)的代码,因为我的assets文件夹中有很多mp3文件: playAudioButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { FileName audio=new FileName(); String audioName=audio.getAudioName(count).toString(); if(audioName==”NO Audio”) { Toast.makeText(getApplicationContext(), “No Audio for this page”, Toast.LENGTH_SHORT).show(); } else { try { afd=getAssets().openFd(audioName + “.mp3”); mp = new MediaPlayer(); mp.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength()); mp.prepareAsync(); mp.start(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalStateException e) […]

是否可以在Service类中使用AsyncTask?

一切都在标题中。 在官方文档中指出, Note that services, like other application objects, run in the main thread of their hosting process而AsyncTask只有在UIThread中执行时才有效。 那么可以在Service类中使用AsyncTask吗? 我试图这样做,但我总是得到同样的错误 05-01 18:09:25.487: ERROR/JavaBinder(270): java.lang.ExceptionInInitializerError … 05-01 18:09:25.487: ERROR/JavaBinder(270): Caused by: java.lang.RuntimeException: Can’t create handler inside thread that has not called Looper.prepare() 我做错了什么或这是不可能的? 这是我的Service类的代码 package com.eip.core; import android.app.Service; import android.content.Intent; import android.os.AsyncTask; import android.os.IBinder; import android.os.RemoteException; […]

CursorLoader和AsyncTaskLoader之间的区别

我为什么要使用AsyncTaskLoader ,什么时候应该更喜欢CursorLoader ,反之亦然? 在官方页面中 ,显示了App-listing示例,它使用AsyncTaskLoader而不是CursorLoader。 这两者有哪些优缺点? 我在某处读到了CursorLoader没有关注内容更改(在sqlite中)。 谢谢!

AsyncTask如何在Android中运行

我想知道AsyncTask如何在内部工作。 我知道它使用Java Executor来执行操作,但仍然有一些我不理解的问题。 喜欢: 在Android应用中一次可以启动多少个AsyncTask? 当我启动10个AsyncTask时,所有任务是同时运行还是逐个运行? 我尝试过75000 AsyncTask来测试它。 我没有遇到任何问题,似乎所有任务都将被推送到堆栈并逐个运行。 此外,当我启动100000 AsyncTasks时,我开始得到OutOfMemoryError。 那么是否可以一次运行AsyncTask的任何限制? 注意:我在SDK 4.0上测试了这些

将AsyncTask转换为RxAndroid

我有以下方法使用otto和AsyncTask发布对UI的响应。 private static void onGetLatestStoryCollectionSuccess(final StoryCollection storyCollection, final Bus bus) { new AsyncTask() { @Override protected Void doInBackground(Void… params) { bus.post(new LatestStoryCollectionResponse(storyCollection)); return null; } }.execute(); } 我需要帮助使用RxAndroid库将此AsyncTask转换为RxJava 。

如何在Android AsyncTask中显示Toast?

我试图在我的initial_background类中使用AsyncTask扩展Toast。 我在logcat中收到此错误。 public class InitialBackgroundTask extends AsyncTask { @Override protected Long doInBackground(URL… params) { // TODO Auto-generated method stub show a = new show(); a.loop(); return null; } public class show { void loop() { for(int i=0; i<10; i++) { Toast.makeText(MainActivity.me, "test", Toast.LENGTH_LONG).show(); } } } 05-30 12:08:12.641: E/AndroidRuntime(30840): FATAL EXCEPTION: AsyncTask #1 05-30 12:08:12.641: […]

如何使用单独的线程来执行http请求

我有一个应用程序在用户单击某些按钮时执行HTTP请求(特别是调用FogBugz API)。 现在,我只是在应用程序启动时创建服务,然后在该服务中调用不同的方法来完成请求。 但是,当我这样做时,UI线程中通常会挂起。 我看过AsyncTask,但我不确定它会做我想要完成的事情。 因为我需要立即解析HTTP请求返回的XML,所以我需要一个能够将此数据返回给UI线程的进程。 ASyncTask能否实现这一目标,还是有其他方式? public static InputStream makeRequest(String httpRequest) { In a separate thread, run HTTP Request, get back and process, return inputstream } 其他几个人调用此方法来执行HttpRequests。 返回输入流后,其他方法将解析特定信息。

如何从Android中的PostExecute正确启动活动?

我有一个AsyncTask,用来自Internet的解析数据填充自定义List。 在PostExecute中,我填写该List并准备将其转移到新的Activity。 我是这样做的: @Override protected void onPostExecute(List result) { super.onPostExecute(result); MainActivity.progressDialog.dismiss(); context.startActivity(new Intent(context, ResultsQueryActivity.class)); } 在哪里上下文 private Context context; 在执行此代码后的LogCat中,我得到了一个Java.lang.NullPointerException。 像我这样开始一项活动是否可行且正确? UPD我补充说 private Context mContext; public YoutubeAndYahooParser(Context context) { super(); this.mContext = context; } 初始化上下文和调用 YoutubeAndYahooParser youtubeAndYahooParser = new YoutubeAndYahooParser(ResultsQueryActivity.this); youtubeAndYahooParser.execute(“my string to pass in asynctak”); 在PostExecute之后 Intent intent = new Intent(mContext, ResultsQueryActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); mContext.startActivity(intent); […]

如何从ASyncTask调用父活动函数?

可以从Activity调用setAccountAuthenticatorResult ,它扩展了AccountAuthenticatorActivity 。 我的活动扩展了,但是启动ASyncTask,因此应该从ASyncTask调用此setAccountAuthenticatorResult (或者,ASyncTask的结果应该传递回主线程)。 怎么做? 下面的代码有什么问题? AsyncTask task = new RetrieveAccessTokenTask(this, consumer, provider, prefs).execute(uri); public class RetrieveAccessTokenTask extends AsyncTask { private Context context; public RetrieveAccessTokenTask(Context context, OAuthConsumer consumer, OAuthProvider provider, SharedPreferences prefs) { this.context = context; } @Override protected void onPostExecute(Bundle result) { context.setAccountAuthenticatorResult(); // doesn’t work }

使用ViewHolder显示ListView中最后一个列表项的状态

int globalPosition ; ………….. buttonAllData.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub new UploadBulkData(globalPosition).execute(); } }); …….. class UploadBulkData extends AsyncTask { private ProgressDialog pDialog; int dataPosition; public UploadBulkData(int position){ this.dataPosition = position; } @Override protected void onPreExecute() { super.onPreExecute(); pDialog = new ProgressDialog(UploadActivity.this); pDialog.setMessage(“Uploading…”); pDialog.setIndeterminate(false); pDialog.setCancelable(true); pDialog.show(); } […]