草庐IT

asynctasks

全部标签

android - 如何在 Android 的 getView() 函数中取消从隐藏项执行的 AsyncTask?

我有一个问题:在ArrayAdapter的getView()函数中,我使用AsyncTask执行将图像加载到ImageView。但是当此项不可见时(滚动ListView),AsyncTask函数仍在加载图像。如果项目不可见,我想禁用AsyncTask进程。有解决此问题的方法吗? 最佳答案 这将涉及两个步骤。1)意识到项目View已经滚出屏幕(或者由于其他原因将不再使用)。您可以设置使用setRecyclerListener()添加一个RecyclerListener对象,该对象将在项目View即将被回收时收到通知(onMovedTo

android - 我应该如何在 AsyncTask.doInBackground 中解压一个大数据文件?

我有一个很大的数据文件,压缩后大约有20MB。解压缩后,它最大约为50MB。以下源代码工作正常。我在其他地方的网络上找到了原件并对其进行了一些修改。此方法在AsyncTask.doInBackground中调用。所以,我想知道的是,我怎样才能保存正在进行的状态(?抱歉,我不知道正确的英文单词)并稍后恢复程序?我的意思是,这种方法需要一点时间(在模拟器上大约一分钟),而且我知道没有办法,因为数据有点大。所以,如果这个方法的一个主要Activity被杀死,我想保存解压文件的当前状态,当Activity激活时,我想从最后一点恢复解压。希望我的解释能澄清我的Intent。我正在考虑使用服务,但

android - 我可以在 AsyncTask 中保留 ContentResolver 多长时间?

我正在尝试编写一个Activity,它为长时间运行的操作生成AsyncTask,并定期将状态更新发布回Activity。我想确保AsyncTask在屏幕旋转或OOM等其他破坏条件下正确存活。I'vereadthisthreadontheandroid-developerslist,这又是ledmetothisimplementation,这几乎是我所需要的。但是,我的AsyncTask的最后一步是从内容解析器中删除一些数据。不要跳过此步骤非常重要,因为数据很敏感,在正常情况下不应留在手机上。但是,ContentResolvers来自Contexts,在本例中为Activity,并且在A

android - 什么会导致 AsyncTask 不执行?

我试图解决的应用程序偶尔会出现故障。在进入应用程序时,主UI线程处理在某一时刻结束并将控制权传递给后台线程以检索一些数据。当数据被检索时,控制传递回主UI线程来处理它以显示。但是,在极少数情况下(99%的时间都有效),AsyncTask似乎无法调用,从而使应用程序永远处于不良静态状态,等待AsyncTask完成。这是Activity中的代码快照://methodcallfrommainUIthreadprivatevoidfetchSomeData(){Log.d("myTag","InfecthSomeData()");newReadFileAsyncTask().execute(t

Android AsyncTask 不调用 onPostExecute

当我调用我的AsyncTask时,doInBackground会运行,但之后永远不会调用onPostExecute。Eclipse没有提示@Override或AsyncTask中的任何参数,所以我不确定问题出在哪里。谁能告诉我问题出在哪里?调用异步任务:newAsyncDataFetcher(this).execute(productInfoUrls);productInfoUrls是一个url列表。异步任务:privatestaticclassAsyncDataFetcherextendsAsyncTask,Void,List>{Contextcontext;publicAsyncD

android - 如何在 AsyncTask 运行时禁用 Button? (安卓)

我正在尝试在执行下载任务时禁用按钮。我尝试过使用setEnabled、setVisibility和setClickable。我想我尝试了这些选项的所有组合。他们都在任务执行时禁用按钮单击事件,但事件仍在以某种方式注册,当我react按钮时,如果我在按钮被禁用时单击按钮,则会调用处理程序......即使它是看不见或“消失”!(不知道是不是叫handler,想引用onClick方法)。我还插入了一个计数器和一个日志来验证我上面所说的内容。代码如下所示。这段代码if(counter>1)return;是为了停止崩溃,但我想删除它,因为我想重新启用按钮,而不是永远禁用它。点击:publicvo

java - AsyncTask 中的 Volatile 和 Synchronized

在AsyncTask的内部实现中(在AndroidSDK中)here,sDefaultExecutor使用volatile关键字声明,并且SerialExecutor中的execute()方法使用synchronized声明关键字。现在因为AsyncTask只能从UI线程执行,而且如果我们执行AsyncTask的一个实例,我们不能执行相同的再次实例,除非前一个实例已完成执行。那么这里怎么会出现多线程的情况呢?为什么SerialExecutor有一个ArrayDeque?因为有一段时间我们只能有一个任务。如果我们创建一个新的AsyncTask实例,那么我们不会得到一个新的ArrayDeq

java - 使用 Service、AsyncTask 和 Thread 制作智能 Android Media Player 应用

首先:对不起,如果我有拼写错误。我来自巴拉圭,我正在使用Google翻译。这可能看起来有点傻,我是一个完美主义者,并且像任何优秀的开发人员和设计师一样,不希望我的项目中出现错误。我正在学习中,希望能和你一起学到很多东西我见过媒体播放器应用程序允许用户快速重复按下播放/停止按钮而不会终止应用程序,并且它仍然正常运行,所以我阅读了有关服务的信息,AsyncTask和Thread。不仅在后台播放声音,而且不会因UI错误而终止我的应用程序。我还有很多问题。我想知道我是否正在使用以下资源(foundonline),但我已经尝试过,当我多次按下播放/停止按钮或有时根本不播放歌曲时,应用程序就死了。

Android AsyncTask 启动另一个 AsyncTask

我目前正在AsyncTask的onPostExecute方法中执行类似的操作,其中NewTask不是当前正在执行的任务:privateclassOlderTaskextendsAsyncTask{//otherfunctions(notimportant)@OverrideprotectedvoidonPostExecute(Integerresult){newNewTask().execute(null,null);}}我想知道这是否是个坏主意。这样做会不会导致OlderTask的GC等待NewTask?使用这种方法还有其他可能的问题吗?如果这是一个问题,我该如何纠正它?

Android、AsyncTask、长时间运行的进程和方向更改

过去,方向更改和AsyncTask(以及其他长时间运行的后台任务)不能很好地相互配合。始终存在一个问题,即了解哪些任务(或线程)仍在新创建的Activity中运行(来自方向更改),以及当Activity未附加时任务结束时要做什么。即使使用Fragments和LoaderManager,这对我来说仍然是个问题。现在管理任意长时间运行的任务和方向变化的首选方法是什么?了解新创建的Activity中正在运行哪些任务。确保任务不会在未附加Activity时尝试传递它的信息。谢谢 最佳答案 在我的程序中我只是把android:configCh