我有一个GoogleTranslate.java文件,其中有一个扩展AsyncTask的类GoogleTranslate。此任务的目的是执行Google翻译。我有另一个类MyVocab,它允许用户在警告对话框中输入要翻译的单词。因此,在单击警报对话框按钮时,将通过调用GoogleTranslate类将单词翻译成所需的语言。但是,当我将进度条从MyVocab传递到GoogleTranslate时,它不起作用。当操作正在运行时(一段可观察的时间),进度条不显示。我在onPreExecute中将进度条设置为VISIBLE,并在onPostExecute中将其设置为GONE。我想知道这是否
我是Android开发新手。我的问题是,我是否使用AsyncTask来发出HTTPGET请求(JSON响应)?这个对吗?如果这确实是真的,有谁知道我在哪里可以看到这方面的例子?如果不是,你能纠正我吗?谢谢! 最佳答案 是的,你没看错,Asynctask用于短时间运行的任务,例如连接到网络。它还用于后台任务,这样您就不会阻塞UI线程或出现异常,因为您无法在UI/主线程中进行网络连接。示例:classJSONAsyncTaskextendsAsyncTask{@OverrideprotectedvoidonPreExecute(){su
我需要执行一些AsyncTasks然后收集他们所有的结果,合并,然后将最终结果返回给我的用户。我正在寻找一种方法来管理多个AsyncTask在Android中。我正在考虑使用ExecutorService来自Java并发包,但我卡住了,因为ExecutorService仅接受Runnables或Callables。为了确定我的要求,我可以使用ExecutorService.invokeAll((Collection>tasks)invokeAll()方法将返回List>的列表只有当所有提交的任务都完成时,我才能从相应的Future中获取每个任务的结果。.ExecutorService一
我正在开发的应用程序使用后台线程通过API下载图像列表,然后在幻灯片中显示图像。有一个后台任务(当前为AsyncTask)定期获取新图像。我没有收到有关错误线程等的任何错误消息,只是AsyncTasks的第二个实例不会运行doInBackground方法。这是Activity中的一些代码:privateDownloadTaskmDownloadTask=null;privateHandlermHandler;@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);m
我想知道AsyncTask是否用于运行线程的主Activity(MainActivity.java)。例如,我注意到许多使用AsyncTask的教程,他们在扩展Activity的主类中声明了一个私有(private)类,而不是创建一个独立的.java文件为AsyncTask(MyAsyncTask.java)class。但我注意到,当使用独立文件时,我无法运行runOnUIThread()因为它属于Activity类,所以我将如何能够在扩展AsyncTask而不是Activity的独立AsyncTask(MyAsyncTask.java)中使用此方法。 最佳
大家。我已经在android网站上阅读了AsyncTask的excute()的描述:publicfinalAsyncTaskexecute(Params...params)但是在我的项目中,我读过这样的代码:privatestaticfinalintJSON=0;privatestaticfinalintNAME=1;@OverrideprotectedStringdoInBackground(String...strData){FileOutputTasktask=newFileOutputTask(context);task.execute(strData[JSON],strDat
在这里,我使用AsyncTask在具有TabLayout和ViewPager的嵌套fragment中调用Web服务。我已经通过在每个Fragment的onResume方法中调用它们来尝试AsyncTasks作为:newFetchAllData(getActivity()).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);和newFetchAllData(getActivity()).execute();一切都很好,但我遇到了很多问题:应用程序在没有任何对话框的情况下停止工作,但它在logcat中显示suspendingallthrea
在后台执行某些操作然后更新UI很难在Android中正确实现。它的设计很糟糕。典型的例子是一个AsyncTask,它从网络上获取一些东西并显示结果。这有两个问题:AsyncTask具有对Activity的引用(因为它需要更新其UI)。屏幕方向更改后,Activity将重新启动。但是AsyncTask仍然引用旧的已销毁Activity,因此它无法更新新Activity的UI。这会导致OutOfMemoryException。想象一下,您有一个包含大量位图的Activity并启动了一些AsyncTask。您按BACK(Activity已完成)但AsyncTask仍在运行,并且因为它引用了A
在我的应用程序中,我有一个UI类,其名称是“SettingActivity”。然后为了在后台做一些工作,我将这个UI类(SettingActivity)绑定(bind)到一个服务。该Service中有两个预定义的方法(在.aidl文件中定义),一个是startTask(),另一个是stopTask()。在startTask()中,我调用了一个AsyncTask。但是当我检查这个AsyncTask的Looper的名称时。这是“主要”。在我看来,AsyncTask应该启动除主线程之外的另一个线程。那么有人知道为什么会这样吗?代码如下:@OverrideprotectedvoidonPreE
我的通话Activity:publicclassHelloextendsActivity{publicvoidonCreate(BundlesavedInstanceState){MyTaskmt=newMyTask(this);mt.execute();}现在在MyTask(外部类)中:publicclassMyTaskextendsAsyncTask{privateContextmContext;publicMyTask(Contextcontext){mContext=context;}//doinbackground,etcprotectedvoidonPostExecute(