SingleMessageView utilizado en el proyecto, después de instanciar el control, haga clic en el avatar del usuario, luego vaya a UserInfo para ver el avatar del usuario, el nombre de usuario, la firma y la etiqueta.
Antes, mi hermano escribió una respuesta de clic del avatar en SingleMessage, hizo clic en el avatar del usuario, pasó el nombre de usuario del usuario a UserInfo por intención, y al mismo tiempo ejecutó una tarea asincrónica que quería que el servidor obtuviera la firma y la etiqueta del usuario. Pásalo por la misma intención, luego la función onResume () de UserInfo recibe la intención de actualizar el diseño de la interfaz de usuario del hilo principal. El código fuente es el siguiente:
bubuko.com, botón Bubu
// respuesta de avatar de otro usuario
Private ImageView.OnClickListener userHeadImgViewListener = new ImageView .OnClickListener () {
@Override
public void onClick (View v) {
String userNameTemp = users_name;
String otheruserData [] = {""};
otheruserData [0] = userNameTemp; // Obtenga el nombre de usuario
// establezca un enlace de red, ejecute la solicitud Tareas asincrónicas firmadas y etiquetadas
ConnectivityManager connMgr = (ConnectivityManager) mContext.getSystemService (Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo ();
if (networkInfo! = null && networkInfo.isConnected ()) {
asyncWebkForOtherinfo = new webTaskForOtherinfo ();
if (android.os.Build.VERSION.SDK_INT> android.os.Build.VERSION_CODES.GINGERBREAD_MR1) {
asyncWebkForOtherinfo.executeOnExecutor (
webTaskForOtherinfo.THREAD_POOL_EXECUTOR, otheruserData);
} else {
asyncWebkForOtherinfo.execute (otheruserData);
}
Log.e ("otherinfodown", "有 网!");
} else {
Log.e ("otherinfodown", "没有 网络 连接 , 请 联网 后 重 试 ...");
}
// TODO Método de generación automática stub
ARUtils.own_information = false;
Intención intento = nuevo intento (SingleMessageView.this.getContext (), UserInfoActivity.class);
intent.putExtra ("nombre", nombre_usuario);
intent.putExtra ("etiqueta", firma de otros); // Obtenga la etiqueta devuelta por la tarea asincrónica y Firma
intent.putExtra ("sign", otherlabel);
String head_img_url = getAppPath () + "/ user_portrait /" + users_name + ".
Jpg "; intent.putExtra ("head_img_url", head_img_url);
intent.setFlags (Intent.FLAG_ACTIVITY_NEW ; // El indicador se usa para distinguir qué actividad pasó la intención
SingleMessageView.this.getContext (). StartActivity (intent);
Log.v ("head_img_click", "success");
}
};
bubuko.com, Bubu Abróchate el
onResume () de userInfo:
bubuko.com,Botón de tela
// Obtenga el nombre de usuario de la intención, la ruta del avatar, la etiqueta y la firma en onResume
Intent intent = getIntent ();
String other_head_img_url = intent.getStringExtra ("head_img_url");
String name = intent.getStringExtra ("name");
String label = intent.getStringExtra ("label");
String sign = intent.getStringExtra ("sign");
userNameText. setText (nombre);
signatureConent.setText (etiqueta);
myTab.setText (signo);
Bitmap smallBitmap = ARUtils.loadBitmapFile (other_head_img_url, 48, 48);
userImgButton.setImageBitmap (smallBitmap);
bubuko.com, Bubuko
es el resultado de la depuración : La firma y la etiqueta obtenidas en singleMessage no se pueden obtener de la intención. . . De acuerdo con la lógica normal, pensar en realizar tareas asincrónicas, asignar valores a las variables globales, firmar y etiquetar, y luego regresar al método de respuesta del avatar del usuario, y luego realizar la operación de paso intencional. La razón por la cual la lógica no se ejecuta normalmente es que la tarea asincrónica es un Clase muy libre, restringe demasiada libertad a los demás. . .
El tiempo de ejecución y el retorno de la tarea asincrónica no están bajo el control del subproceso principal ui. El subproceso principal no esperará obedientemente la ejecución de la tarea asincrónica y luego ejecutará las instrucciones debajo de la tarea asincrónica, de modo que el significado de la tarea asincrónica ya no esté allí. .
Por lo tanto, la operación de actualizar el subproceso principal de la interfaz de usuario debe colocarse en el método de publicación de la tarea asincrónica. ¿Qué debe hacer el subproceso principal? Ya que ha utilizado la tarea asincrónica, deje que la tarea asincrónica termine lo que ha hecho y ¡La posición de la tarea debe colocarse en la misma actividad que el hilo principal de la interfaz de usuario!
Entonces, al final, nuestra solución es hacer clic en el avatar del usuario en singleMessage, pasar el nombre de usuario a través de la intención y saltar a userInfo al mismo tiempo, en onResume () de userInfo, después de recibir la intención, ejecute la información personalizada otherInfo (othername ), El método otherInfo (String othername), ejecuta la tarea asincrónica webTaskForOtherINfo (); pasa el nombre de usuario a la tarea asincrónica, y luego define la clase webTaskForOtherINfo () en UserInfo, ejecuta la etiqueta de solicitud y la tarea de firma desde el servidor, y publica Realice la actualización del control UI de actualización en ok. . . . . .
La actualización del control de subproceso principal de la interfaz de usuario completa la tarea asincrónica de esta actividad
Supongo que te gusta
Origin www.cnblogs.com/aquariusunny/p/12729879.html
Recomendado
Clasificación