我尝试使用Asynctask在Android中进行网络连接,无论成功与否。我比较好奇的是:Asynctask有必要做内部类吗?我没有将它作为内部类的一种形式,但GoogleAPI指南说AsyncTask必须被子类化才能使用。(但我没有,它有效...)-http://developer.android.com/reference/android/os/AsyncTask.html为什么Asynctask采用类的形式,即使它只执行一个主要功能?(我觉得应该是方法,而不是类。) 最佳答案 'AsyncTaskmustbesubclasse
谁能告诉我这里出了什么问题?publicclassBackgroungTaskextendsAsyncTask{publicVoiddoInBackground(String...params){//tasksreturn;//erroroccurshere!}publicvoidonPostExecute(Voidresult){//codes}}上面的类不依赖于返回值。所以onPostExceute()只是执行写在里面的代码。提前致谢! 最佳答案 只返回null。publicclassBackgroungTaskextendsA
场景:我正在尝试对我的应用程序的onClick处理程序进行单元测试。Onclick针对RESTAPI进行简单搜索,返回结果并更新UI。详细信息:Onclick执行一个AsyncTask,doInBackground查询RESTAPI并返回结果。onPostExecute获取结果并将新的ListAdapter分配给包含数据的ListView。问题:onPostExecute不会被测试运行程序调用,因为它在同一个UI线程上并阻止调用。有几种模式可以处理这个问题。但是,如果我将AsyncTask放在Runnable中并使用LatchCountdown等待结果,我会得到CalledFromWr
存在以下组件(简化)的设计模式是智能的:3个组件-界面-数据getter-数据库我无法访问Internet中的服务器,它只是一个数据源。放在互联网上的数据总是更新的,本地数据库只是互联网上的一个副本(缓存)。GUI可以请求和更新本地缓存,类服务组件然后异步获取最新数据,这可能需要一段时间。GUI仅显示来自本地数据库的数据,他可以同步获取这些数据。所以我的问题是,对于具有Progressbar功能的可能长期运行的服务,您会使用哪些类?对于这种“问题”有更好的设计吗?有更好的做法吗? 最佳答案 关于类似服务的组件:启动更新过程的接口(i
在doInBackground中,我需要引用应用程序上下文或Activity。在线程安全和其他可能的多线程概念方面,newMyAsyncTask(getApplicationContext())和doInBackground(Context...params)之间有什么区别吗,限制?谢谢。 最佳答案 没有。假设你有类似的东西:privateclassMyAsyncTaskextendsAsyncTask{privateContext_context=null;MyAsyncTask(Contextcontext){_context=
我有一个包含以下方法的嵌套fragment:publicvoidonSave(){if(getActivity()==null||view==null)return;if(file!=null&&file.exists()){newAsyncTask(){@OverrideprotectedvoidonPreExecute(){Log.d("log","onPreExecuteofsaveex");}@OverrideprotectedVoiddoInBackground(Void...params){Log.d("log","doInBackgroundofsaveex");//DO
我想安排或排队在后台执行多个AsyncTask。我有一个在服务中运行的用于HTTP发布请求的AsyncTask,同时我在AsyncTask的UI线程中再发出一个HTTP请求。UI线程执行时间过长,因为已经有一个线程在服务中运行。如何解决这个问题。?我需要暂停一个服务线程,我想先执行UI线程,然后为AsyncTask重新启动一个服务线程。提前致谢 最佳答案 由于AsyncTasks可以共享一个线程,我会尝试通过调用来解耦它们:my_task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTO
在处理AsyncTask和屏幕旋转时,我仍在努力寻找“正确”的设计模式。我阅读了链接到thiscommonswareblogpost的thiscode,但现在不推荐使用onRetainNonConfigurationInstance方法。文档中的神奇句子指出“在切换到下一个Activity期间不处理消息的保证简化了Activity对象的使用......”这是关于此方法所做的真正关键部分。我看不到它关于使用setRetainInstance()能够实现相同目标的建议。我还看到了suchasthisone的帖子,其排名第一的答案实际上就是一个糟糕的黑客攻击,它只涵盖了90%的用例(即,如果
我在onLoadFinished回调(来自LoaderManager.LoaderCallbacks)上返回了一个游标,我想对此游标进行一些(可能代价高昂的)后处理。因此,我正在启动一个使用此Cursor的AsyncTask。但是,我会间歇性崩溃并出现此异常:android.database.StaleDataException:Attemptedtoaccessacursorafterithasbeenclosed.我怀疑这是因为游标(由UI线程中的加载程序管理)在后台线程完成之前关闭,因为这是一个托管游标。这是一些释义代码:privateclassLoaderListenerimp
我正在创建一个android应用程序,它接受用户输入,尝试使用指定的输入连接到APIurl并检索数据并显示它。现在我已经能够执行上述所有操作,但如果用户输入的内容不存在,我的应用程序可能会因NPE(空指针异常)而崩溃。我使用的API向我显示了可能发生的响应错误列表,但我不确定我应该如何处理或实现将这些响应错误考虑在内的功能。目前,我的扩展AsyncTask类具有这些参数:String、Void、JSONObject,以下代码是我在doInBackground方法中的内容.URLurl=newURL(params[0]);urlConnection=(HttpURLConnection)