我需要一些有关登录过程代码基本架构的帮助。我正在实现异步Http处理以使ICS工作。这段代码的目的是登录我的应用。从UI(Login.java)提交登录表单连接到我们的服务器并通过http获取XML结果传递用户名/密码将XML结果解析为数组。(ParseXML.java)在UI中显示结果反馈。现在这一切都在我的程序中工作,但是在尝试使用强制执行异步HTTP连接的ICS进行测试后,我很快意识到我的问题并让我怀疑我的整个设计......目前的基本工作方式:登录.java:classLogin{...ParseXMLmyXMLParser=newParseXML();myXMLParser.
我的Activity有一个AsyncTask,您可以在下面看到其doInBackground方法。我必须向多个服务器发出多个搜索请求,为了加快执行速度,我使用了Java的ExecutorService来发出并发请求。这工作正常,但如果我用调用AsyncTask.cancel();方法,我希望我的AsyncTask停止它正在做的事情并退出>true作为mayInterruptIfRunning参数。这在我需要在我的Activity退出时停止任务的情况下很有用,例如按下“后退”按钮。我读到调用AsyncTask的cancel()方法将阻止调用onPostExecute方法,但是doInBa
假设我在Activity类中有一个内部类AsyncTask。我必须在这个AsyncTask中有weakRefeernce吗?此外,我是否必须始终为AsyncTask使用weakReference?最后,如果我将内部类AsyncTask声明为静态的,它安全吗? 最佳答案 是的,如果它是内部类或只是创建它自己的类,请始终将您的Asynctask声明为静态,尽量避免声明为非静态内部类,因为它会造成内存泄漏。Readhereforamoreelaborateexplanationwhyyoushouldnotdothis您不想使用WeakR
我有一个Activity类,它有一个引用AsyncTask实例的属性,这个AsyncTask也引用了这个Activity。从AsyncTask的onPostExecute()我想将Activity对AsyncTask的引用设置为null(通过具有AsyncTask实例的Activity引用).这是一个好的做法吗?我在方法代码的最后一行执行此操作,因为我实际上是在告诉垃圾收集器它可以删除该实例,因为它不再被任何其他对象(Activity)引用。这是正确的,还是我错了?编辑:我在下面的回答恢复了我使用的最终解决方案。谢谢! 最佳答案 在
我正在尝试创建下载进度。我有扩展AsyncTask的类(class):公共(public)类DownloadFileTask扩展AsyncTask当下载开始时,我想创建进度:@OverrideprotectedvoidonPreExecute(){progressDialog=newProgressDialog(whatContext);progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);progressDialog.setMessage("Loading...");progressDialog.setCan
在我正在开发atm的应用程序中。我使用asynctasks将视频上传到网站,就像现在一样,如果应用程序进程被终止(用户使用返回键返回主屏幕),那些asynctasks就会丢失。理想情况下,我希望在应用程序进程被终止的情况下继续上传,但我认为这是不可能的。我想知道是否有办法以某种方式保留他们的进度(也许需要网站API的支持?),或者如果没有,至少保存异步任务的详细信息并在再次打开应用程序时重新启动它。Vimeos应用程序似乎已经能够恢复视频上传,即使在终止应用程序进程之后,这正是我希望实现的。感谢任何想法和建议。 最佳答案 我认为您可
我有一个AsyncTask正在运行。我有一个TextView,我模仿Toast最初产生的消息。我想在OnPostExecute成功后清除TextView但它没有这样做。任务完成Toast工作正常。如何将OnPostExecute中的TextView设置为空白?用户仍在TextView所在的显示屏幕上。错误情况代码如下:@OverrideprotectedvoidonPostExecute(Voidresult){FetchingImage=0;if(webLoadError>0){TextViewtext=(TextView)findViewById(R.id.textView2);S
我想构建一个类,每次我想进行网络连接时,我都会使用它。我想先打开一个对话框,然后建立网络连接(或从SQL获取某些内容或从Web下载某些内容或更新SQL),然后关闭该对话框。我需要等待函数结束才能继续。我想使用AsyncTask,但我想不出一种方法来确定在AsyncTask中使用哪个函数。我找到了两种解决方案,switch-case或尝试使用java反射发送函数。两种解决方案都不太好。有人有其他想法或其他方法吗? 最佳答案 考虑使用Command设计模式。HereisJavaexample.您可以通过回调对其进行扩展,以便在完成后台工
这个问题在这里已经有了答案:AsyncTask:wheredoesthereturnvalueofdoInBackground()go?(2个答案)关闭9年前。我在我的应用程序中使用httpGET方法检索数据。任务完成后,我希望在我的mainActivity中显示返回值(目前我的应用程序中只有1个Activity)这是我的asyncTask类:classgetAsyncextendsAsyncTask{Stringret;@OverrideprotectedStringdoInBackground(String...params){Stringurl=params[0];myGetRe
我正在尝试实现一个在您键入时自动搜索的搜索栏。我的想法是有一个AsyncTask从服务器获取搜索数据,但我无法确定AsyncTask在我使用它时会有怎样的表现。假设我有SearchAsyncTask。每次编辑文本字段时我都会调用newSearchAsyncTask().execute(params);所以这是我的问题:它的行为是什么?我会启动许多不同的线程,它们都会返回并调用onPostExecute()吗?或者如果另一个实例在它仍在工作时被调用,第一个被调用的任务是否会在任务中停止?还是完全不同的东西?如果这样写呢?SearchAsyncTaska=newSearchAsyncTas