我没有花太多时间AsyncTasks在Android上工作.我试图了解如何将变量传入和传递给类.语法:
class MyTask extends AsyncTask<String, Void, Bitmap>{
// Your Async code will be here
}
Run Code Online (Sandbox Code Playgroud)
它与< >类定义末尾的语法有点混淆.以前从未见过这种语法.似乎我只限于将一个值传递给AsyncTask.假设这个我不正确吗?如果我有更多要通过,我该怎么做?
另外,如何从AsyncTask返回值?
这是一个类,当你想使用它时,你会调用,new MyTask().execute()但你在课堂上使用的实际方法是doInBackground().那你在哪里实际归还的东西呢?
我想AsyncTask在我的应用程序中使用for来管理一些业务逻辑.使用separed文件onProgressUpdate(...)中AsyncTask定义的方法的最佳模式是什么(不是作为一个类的Activity)我有两个想法:
1.最简单的方法:创建ProgressDialogin Activity(使用onCreateDialog(...)方法)并通过AsyncTask构造函数传递对我的子类的引用(覆盖onProgressUpdate(...)里面)我的AsyncTask子类).此解决方案的缺点是在业务逻辑代码中使用UI组件.
FooTask1.java:
public class FooTask1 extends AsyncTask<Void, Integer, Void> {
private ProgressDialog mProgressDialog;
public FooTask1(ProgressDialog progressDialog) {
super();
mProgressDialog = progressDialog;
}
@Override
protected Void doInBackground(Void... unused) {
// time consuming operation
for (int i=0; i<=100; i++) {
this.publishProgress(i);
try {
Thread.sleep(100);
} catch (Exception e) {}
}
return null;
}
@Override
protected void onProgressUpdate(Integer... progress) {
mProgressDialog.setProgress(progress[0]);
} …Run Code Online (Sandbox Code Playgroud) 我正在开发一个Android应用程序,它需要使用AsyncTask进行网络连接.我从主线程调用它.因此doInBackground方法运行,然后返回onPostExecute方法.执行onPostExecute方法后,我想返回一个值回从那里它被称为活动,因为我要在那个特定的活动有一定的操作需要从onPostExecute方法的返回值.我该如何解决这个问题?如何从onPostExecute返回值?
提前致谢
在现有的应用程序中,我有一个内部类的活动,它扩展了AsyncTask,如下所示:
public class Activity_1 extends BaseActivity {
....
new async().execute();
...
public class asyncextends AsyncTask<Void, Void, String> {
protected String doInBackground(Void... progress) { ... }
protected void onPreExecute() { ... }
protected void onPostExecute(String result) { ... }
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我需要从另一个活动调用相同的doInBackground方法,但是onPostExecute()这个内部类的操作在一些本地UI变量上,因此不可能在clas之外使用它.有没有什么方法可以调用这个AsyncTask,只是覆盖onPostExecute和onPreExecute-method,或者我应该在另一个活动中创建另一个内部类,做同样的背景事情(当然把它移到普通的实用程序类或者什么)等等......?
我希望通过调用服务器上的webservice的URL链接将userdata插入数据库:例如:这是链接:
http://mydomain.com/AndroidWebService.asmx/nInsertInfo?id=12&lat=23.2222&log=12322
Run Code Online (Sandbox Code Playgroud)
所以我想以隐藏模式调用此URL.
一旦doInBackground()完成后我想从我的主要活动中启用几个按钮!有人可以让我知道怎么做吗?
因为它不是一个班级,所以我不能用它findViewByID()来让AsyncTask班级上的按钮可见activity!:/