ski*_*t51 8 android android-intent
我的问题与 在AsyncTask的onPostExecute中未设置的Activity的Instance变量或如何将数据从AsyncTask返回到主UI线程 但我想将数据发送回同一个调用活动相同.对于Intent,startActivity总是重新启动活动
Mik*_*e D 16
选项是使用侦听器,您可以在其中创建活动实现的接口,例如:
public interface AsyncListener {
public void doStuff( MyObject obj );
}
Run Code Online (Sandbox Code Playgroud)
这样,如果你是AslassTask的子类,很容易添加这个监听器,那么在onPostExecute()中,你可以这样做:
protected void onPostExecute( MyObject obj ) {
asyncListener.doStuff(obj);
}
Run Code Online (Sandbox Code Playgroud)
这取决于您的类结构,但如果您的AsyncTask是您的Activity中的类,那么您可以引用该活动的方法.您要做的是在onPostExecute方法中调用Activity的一个函数,该函数将在AsyncTask中检索到的一些数据传递给您可以使用它的活动.
代码看起来像这样
class YourActivity extends Activity {
private static final int DIALOG_LOADING = 1;
public void onCreate(Bundle savedState) {
setContentView(R.layout.yourlayout);
showDialog(DIALOG_LOADING);
new LongRunningTask1().execute(1,2,3);
}
protected Dialog onCreateDialog(int dialogId) {
switch(dialogId) {
case DIALOG_LOADING:
ProgressDialog pDialog = new ProgressDialog(this);
pDialog.setTitle("Loading Data");
pDialog.setMessage("Loading Data, please wait...");
return pDialog;
default:
return super.onCreateDialog(dialogId);
}
}
private void onBackgroundTaskDataObtained(List<String> results) {
dismissDialog(DIALOG_LOADING);
//do stuff with the results here..
}
private class LongRunningTask extends AsyncTask<Long, Integer, List<String>> {
@Override
protected void onPreExecute() {
//do pre execute stuff
}
@Override
protected List<String> doInBackground(Long... params) {
List<String> myData = new ArrayList<String>();
for (int i = 0; i < params.length; i++) {
try {
Thread.sleep(params[i] * 1000);
myData.add("Some Data" + i);
} catch(InterruptedException ex) {
}
}
return myData;
}
@Override
protected void onPostExecute(List<String> result) {
YourActivity.this.onBackgroundTaskDataObtained(result);
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以典型的流程是这样的,设置当前页面的视图,然后显示进度对话框.在那之后启动异步任务(或者无论何时,它都无关紧要).
异步任务完成后,调用活动的函数并将数据传递给它.不要在异步任务中使用共享数据,否则就会出现线程问题.相反,一旦完成,就将其传递给活动.如果要在执行工作时逐步更新视图,可以在onProgressUpdate上使用
| 归档时间: |
|
| 查看次数: |
15558 次 |
| 最近记录: |