jlo*_*pez 3 android view parameter-passing android-asynctask
我正在编写一个代码,我在其中膨胀视图,当用户单击一个视图时,我需要执行解析URL,然后检查解析是否返回给我.问题是我需要在asynctask解析中做到不能获得异常,并且在任务结束之前进行检查.
理想的做法是将视图作为参数发送到AsyncTask,以将我的所有代码发送到Asynctask.但不是如何使这最后
我把代码放在了容易理解的地方.
vMens.setOnClickListener(new View.OnClickListener() {
public void onClick(View vMens) {
int readOK=0;
try{
new taskMensaje(vMens).execute();
if(mess_gest.equals("1")){
readOK=1;
}else{
readOK=0;
}
}catch(Exception e){
Utils.showDialog(Calendario.this, "Error", "No se puede gestionar el mensaje");
}
if (readOK==0){
Mess.state = message.get(vMens.getId()).p1;
Mess.tittle = message.get(vMens.getId()).p2;
else{
//message no gest
}
}
});
private class taskMensaje extends AsyncTask<String, Void, View> {
@Override
protected String doInBackground(String... params) {
MensajeriaGestionablePARSER parserMensGest = new MensajeriaGestionablePARSER(urlMensGest);
gestionables = parserMensGest.parse();
mess_gest = gestionables.get(0).p0;
return "";
}
}
Run Code Online (Sandbox Code Playgroud)
有什么想法解决这个问题吗?
谢谢,抱歉我的英语不好
您可以将它作为参数添加到构造函数并将其存储在AsyncTask对象上.将其存储为WeakReference并在onPostExecute上进行检查,就像在http://developer.android.com/training/displaying-bitmaps/process-bitmap.html上显示来自官方文档的图像的最佳实践一样.
private class TaskMensaje extends AsyncTask<String, Void, Void> {
private WeakReference vRef;
... / your other stuff here
public TaskMensaje (View v) {
vRef = new WeakReference(v);
}
@Override
protected String doInBackground(String... params) {
MensajeriaGestionablePARSER parserMensGest = new MensajeriaGestionablePARSER(urlMensGest);
gestionables = parserMensGest.parse();
mess_gest = gestionables.get(0).p0;
return null;
}
@Override
protected onPostExecute(Void result) {
if (vRef != null && bitmap != null) {
final ImageView imageView = vRef.get();
if (imageView != null) {
// Do whatever you want with your ImageView
...
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
顺便说一句,请参阅AsyncTask参考文档以了解如何在类定义中使用泛型参数;-)在http://developer.android.com/reference/android/os/AsyncTask.html
| 归档时间: |
|
| 查看次数: |
3914 次 |
| 最近记录: |