Difícil búsqueda de errores y localización de carreteras

retrato personal

prefacio

Estaba por capricho hoy. Originalmente quería escribir un artículo y publicarlo en Jianshu, pero lo que no esperaba era que él no lo permitiría. Dijo que de acuerdo con la solicitud de la autoridad competente, todas las publicaciones de los usuarios se suspenderá hasta el 28 de septiembre. ¿Conoces este sentimiento?, de hecho, hace tiempo que quería publicar artículos sobre csdn, pero nunca he tenido tiempo. Soy un ingeniero de desarrollo de Android de nivel novato que acaba de ingresar a la sociedad. El objetivo principal de escribir un artículo es registrar su propia experiencia laboral. Sin más preámbulos, entremos en el tema de hoy.

La fragmentación actual de Android es bastante grave, ya que al ser un sistema de código abierto, cada fabricante de móviles tiene su propia Rom. La adaptación de cada fabricante es un gran problema para un programador de desarrollo de Android principiante y trabajador como yo. Pero de lo que estoy hablando hoy no es de adaptación, jajaja, entonces ¿de qué es exactamente lo que voy a hablar hoy?
sdf.jpg

Lo que dije antes se puede considerar una tontería, jajaja, de lo que quiero hablar hoy es uno de los métodos de posicionamiento cuando se encuentra con un error que no se puede reproducir.

fuente del problema

No sé si alguna vez te has dado cuenta de que la aplicación desarrollada funcionaba perfectamente en tu propio teléfono móvil, pero como resultado, los clientes tenían problemas tan pronto como la usaban. Así es como estoy ahora. Cuando la aplicación de la empresa se ejecutaba en mi teléfono móvil, se iniciaba muy rápido, pero en manos de algunos clientes, se volvió difícil de abrir. Se tarda más de diez segundos en mostrar la interfaz principal.
¡Qué UX! ! ! !
chocar

Soluciones

No todos los teléfonos móviles tienen problemas, así que primero descarta errores de lógica de código. Lo más probable es que sea un problema de terceros. Pero no podemos resolverlo a ciegas a ciegas. En primer lugar, tenemos que averiguar dónde se producen los problemas. Tanto si se puede solucionar como si no, primero debemos localizar la ubicación de estos problemas. (En realidad, era como un pollo sin cabeza al principio. He estado en Baidu sobre cómo mejorar la velocidad de inicio. Qué inicialización de terceros no debe colocarse en el hilo principal, etc.) Más tarde, realmente no había manera. Consulté a personas experimentadas y aprendí sobre
un problema de posicionamiento Método. Hablemos ahora.

Para ser honesto, cuando su propio teléfono móvil y los teléfonos móviles probados no tienen problemas, los clientes siguen diciendo que la aplicación no es fácil de usar. Entonces, el método de posicionamiento es:

método de posicionamiento

En primer lugar, debe pensar por qué sucede esto. Hay varias razones para esto:
1. El marco de trabajo de terceros puede bloquearse durante la inicialización (el subproceso principal está bloqueado por la red u otras razones)
2. La red está no es bueno
3. Obtener datos locales, algo salió mal
...

Bueno, tan pronto como lo abras, debe serOnCreatHay una relación en el método Después de que entendamos el proceso interno, podemos entrar en el enfoque de este artículo.

enfocar

Necesita un servidor de fondo. Si conoce el fondo, escriba una pequeña demostración, que se utiliza principalmente para mostrar los datos cargados por la aplicación. ¿Qué pasa si no hay antecedentes? ? Baidu lo comprende y se da cuenta por sí mismo. Este es un método que puede ampliar su conocimiento. Pero esto lleva mucho tiempo. ¿Que debería hacer entonces? Esto es fácil de manejar, solo solicite ayuda a los antecedentes de su empresa, es muy simple lograrlo.

Luego, la demostración del servidor en segundo plano está lista y comenzamos a usar el cuchillo en la aplicación. Al final de cada inicialización del marco de terceros, cargamos el modelo de teléfono móvil actual, el estado de la red, la memoria restante, la información de terceros inicializada y el tiempo de finalización más importante (en milisegundos). ¿Qué? ¿No sabes cómo conseguirlos? Esto se explicará en detalle en mi próximo artículo. De esta manera, cuando cree una aplicación de prueba para que la abran los usuarios, a través de la comparación de tiempo, sabrá qué paso es el culpable del acceso lento. Es inútil decir más, déjame dar una castaña:

/**
         * 初始化极光推送SDK
         */
        JPushInterface.setDebugMode(true);
        JPushInterface.init(context);
        //调用网络访问封装类,上传 Log 日志数据
        new MyLibraryLogAPI().uploadLog("initApp", "App", LogTestUtils.produceLogMsg(this, "极光推送初始化"), 1);

LogTestUtils.produceLogMsg(this, "Jiguang push initialization") Esto es para obtener el valor que necesito, de la siguiente manera:

 public static String produceLogMsg(Context context,String problemSite){
        String logMsg=null;
        logMsg="调试哪个步骤造成卡顿:" +
                "  当前手机:" + getDeviceBrand()+"   "+getSystemModel()+ 
                "  时间:"+getLogTimeString() +                                         
                "  本机总内存大小:" +getTotalMemory(context)+         
                "  当前可用内存大小:" +getAvailMemory(context)+            
                "  网络状态:" + getAPNType(context)+                                
                "  停留的定位:"+problemSite;                                          
        return logMsg;
    }

En este punto, el funcionamiento de la App está terminado, ¿no es muy sencillo? La razón principal es que el fondo es un poco difícil de manejar. jajaja

Cuando compilamos la aplicación y la probamos en el teléfono móvil, el servidor en segundo plano imprimirá los datos que cargamos y adjuntará el mapa de resultados en segundo plano.
Gráfico de resultados de fondo
De esta manera, la inicialización es clara de un vistazo. Solo necesitamos empaquetarlo para el cliente y pedirle que abra la aplicación, ¡y podemos localizar dónde está el problema! !
Los amigos cuidadosos pueden encontrar que el gráfico de resultados que di parece ser bastante normal, y cada inicialización se completa en milisegundos. Así es, realmente no hay problema, porque aún no he localizado dónde está el problema, jajajaja, al menos ahora puedo saber que el problema con el cliente no lo inicializa un tercero, y el siguiente paso será en posición de adquisición de datos locales y de red.

Resumir

Este es un método de posicionamiento de problemas, y debe haber otros métodos mejores, porque creo firmemente en una frase: Siempre hay más soluciones que dificultades, ¡y todo es posible!
Las palabras clave no son fáciles, por favor, dale me gusta y síguelas. También es mi primer artículo formal, si hay algún error, por favor critíquelo y corríjalo. ??

Al final, un mapa divino llegó al fondo.
inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_43683367/article/details/100676678
Recomendado
Clasificación