Cosas a las que prestar atención en el desarrollo de Android

El código JNI de la misma aplicación, no cambia fácilmente la versión compilada por NDK, de lo contrario habrá muchos problemas (principalmente algunos métodos se implementan de manera diferente, y la versión superior tiene una detección de código más estricta), como r8, hay no hay problema, pero habrá r9 El problema es que este es un gran pozo;

En el código JNI de Android, las funciones con tipos de retorno y sin valores de retorno no informarán de un error cuando se compilen;

El método onPause de la actividad actual ejecutará el método onCreate de la siguiente actividad solo después de que se complete la ejecución del método onPause de la actividad actual. Por lo tanto, no es adecuado realizar trabajos que consuman mucho tiempo en el método onPause, que afectar la eficiencia de saltar entre páginas;

Usa el tema transparente de Android con cuidado. Los temas transparentes pueden causar muchos problemas. Por ejemplo, si la nueva Actividad usa un tema transparente, no se llamará al método onStop de la Actividad actual; cuando presionas el botón Inicio en la interfaz de Actividad que está configurada para el tema transparente, puede causar el problema de la actualización sucia, ingresar a la interfaz con un tema transparente tendrá una obvia sensación de retraso;

No inicialice ViewStub en un subproceso que no sea de la interfaz de usuario, de lo contrario devolverá un valor nulo;

La interfaz pública debe tener en cuenta la situación de reentrada del código, si se puede diseñar como singleton, intente utilizar un singleton;

No pase datos grandes a través de Bundle, de lo contrario, se informará TransactionTooLargeException: java-Problema: pasar datos grandes a la segunda actividad

Trate de no almacenar en caché los datos a través de la Aplicación, esto no es estable: ¡No almacene datos en el objeto Aplicación de Android!

Intenta no usar AnimationDrawable. Carga todas las imágenes en la memoria cuando se inicializa. Ocupa memoria y no se puede liberar. Después de la liberación, informará de un error la próxima vez que se cargue nuevamente; 9 imágenes no se pueden comprimir con tinypng, de lo contrario habrá problemas ;

El emulador genymotion es rápido porque está basado en la arquitectura x86, si lo usas en tu aplicación, pero no tienes la arquitectura x86, solo puedes dejar de usarlo, lo mismo ocurre con el emulador de Android Studio;

Después de configurar el entorno de desarrollo de Android Eclipse, no actualice fácilmente ADT y compile las herramientas, de lo contrario, perderá mucho tiempo y no debería haber demasiados proyectos en un espacio de trabajo, de lo contrario, cada inicio será muy lento;

Cada versión de Android Studio y cada versión de Gradle son bastante diferentes (creo que sí). Se recomienda compilar código jni en Eclipse. Si desarrolla jni en Android Studio, perderá mucho tiempo, principalmente compilando scripts. La configuración es problemática;

Lint en Eclipse es demasiado poco confiable, especialmente cuando el proyecto principal depende de la biblioteca, muchas indicaciones son problemáticas, se recomienda utilizar la herramienta de limpieza de proyectos de Android Studio, especialmente recomendada;

La implementación de AsyncTask de diferentes versiones de API es diferente. Algunas pueden ejecutar múltiples tareas al mismo tiempo y algunas API solo pueden ejecutar un hilo al mismo tiempo. Por lo tanto, cuando se ejecutan múltiples AsyncTasks al mismo tiempo en el programa, Es posible encontrar un método de ejecución AsyncTask durante mucho tiempo. Sin implementación. El análisis de la razón y el plan de mejora de llamar al método excute de AsyncTask no puede ejecutar el programa inmediatamente

En la misma aplicación, las mismas imágenes se colocan en drawable-xxhdpi, drawable-xhdpi, drawable-hdpi, drawable-mdpi y drawable-ldpi. La memoria ocupada por el mismo dispositivo será muy diferente (el ppp del dispositivo es fijo, La imagen se coloca en diferentes carpetas de ppp. Cuando se muestra en el dispositivo, la imagen debe convertirse al mismo ppp que la pantalla actual y mostrarse en el dispositivo, por lo que incluso si la imagen es del mismo tamaño en diferentes carpetas de ppp, se almacena en la memoria. El tamaño no es el mismo, no necesariamente el largo y el ancho 4), antes de hacer la optimización de memoria de la aplicación, puedes echar un vistazo a cómo se adapta tu proyecto a la pantalla y si hay espacio para la optimización. Recomiendo encarecidamente este video tutorial de adaptación de pantalla, que se puede ver en dos horas y media: Guía de adaptación de pantalla de Android

Tenga cuidado con las actualizaciones de la base de datos (como agregar campos a la base de datos original) para evitar la pérdida de datos o el funcionamiento anormal de la base de datos Para conocer los métodos de actualización de la base de datos, consulte P263 de "La primera línea de código";

Cuando varios programas comparten un conjunto de códigos (un conjunto de códigos, varios iconos en el escritorio), es necesario resolver el problema de la pila al ingresar diferentes entradas;

Al usar Adapter, si usa ViewHolder para el almacenamiento en caché, no importa si cada vista de este elemento debe configurarse en el método getView (por ejemplo, la propiedad establecida por TextView puede ser nula, el fondo de un determinado botón del elemento es transparente , algunos El color de un elemento es transparente, etc.), debe establecer atributos para todas las vistas de cada elemento (el atributo de textview debe establecerse en setText (""), y el fondo es transparente también debe ser set), de lo contrario, aparecerá durante el proceso de deslizamiento La visualización del contenido está distorsionada.

Utilice el multiproceso de Android con precaución. Aunque el multiproceso puede reducir la presión de la memoria del proceso principal, encontrará los siguientes problemas:

(1) No se puede lograr la función de salir completamente de todas las actividades (si algún compañero ha implementado con éxito el programa de salida completo a través de múltiples procesos en la aplicación, comuníquese con ellos)

(2) Habrá un retraso al ingresar a la página del nuevo proceso de inicio por primera vez (puede haber una pantalla negra o una pantalla blanca por unos segundos, ya sea una pantalla blanca o una pantalla negra relacionada con el tema de la nueva actividad);

(3) Cuando hay varios procesos en la aplicación, un proceso recién iniciado volverá a ejecutar el método onCreate de la Aplicación. No volverá a crear una Aplicación, pero volverá a ejecutar el onCreate de la Aplicación, por lo que los datos no se pueden almacenar en caché. la Aplicación como una forma de compartir memoria Arriba

(4) Cuando compartir datos a través de SharedPreferences entre varios procesos es inestable, puede consultar "Exploración del arte de desarrollo de Android" para obtener más detalles.

Al usar Toast, se recomienda definir un objeto Toast global, para evitar la situación de que el último mensaje de Toast no se pueda cancelar cuando el Toast se muestra continuamente (si tiene Toast emergente continuo, evite usar Toast.makeText) ;

Cuanto mayor sea el área de la Vista, mayor será el tiempo de dibujo, y el canal transparente tiene una gran influencia en la velocidad de dibujo de la Vista;

No pase objetos grandes a través de Msg, causará problemas de memoria;

Con respecto a la experiencia de usar AS, consulte: Algunos problemas que deben entenderse durante el uso de Android Studio

Después de que el proyecto Eclipse se convierta a la versión AS, la instalación en la misma máquina informará el error "INSTALL_FAILED_VERSION_DOWNGRADE". El motivo es que, al establecer el nombre de la versión y el número de versión del apk en el archivo Manifest.xml, puede también se puede configurar en build.gradle Configure el nombre de la versión y el número de versión del apk en el archivo, recuerde modificar el nombre de la versión y el número de versión en build.gralde a la última versión;

En circunstancias normales, después de insertar el USB, puede saltar a una nueva interfaz. En este momento, es posible que tenga una pantalla horizontal, pero de repente, saltar a esta nueva interfaz es una pantalla vertical. Aunque su interfaz se presiona a continuación, pero aún se verá obligado a cambiar entre pantallas horizontales y verticales una vez. Si su interfaz no se procesa en este momento, se sobrecargará. Si hay muchos fragmentos en su interfaz, la sobrecarga en este momento es más complicada y difícil de manejar. Por lo tanto, se recomienda que la interfaz que no cambia entre pantallas horizontales y verticales se cambie sin sobrecargar.

Si configura una actividad en el manifiesto para android: windowSoftInputMode = ”adjustResize”, entonces ScrollView (u otros ViewGroups escalables) se reducirá para dejar espacio para el teclado virtual. Sin embargo, si configura android: windowFullscreen = ”true” en el tema de la actividad, ScrollView no se encogerá. Esto se debe a que esta propiedad obliga a ScrollView a mostrarse en pantalla completa. Sin embargo, configurar android: fitSystemWindows = ”false” en el tema también hará que adjustResize no funcione;

Al realizar funciones de escritura a mano personalizadas, no todos los puntos informados por la capa inferior se pueden recibir en MotionEvent a tiempo. Por ejemplo, si la capa inferior tiene 200 puntos por segundo, la capa superior solo puede recibir docenas de puntos. Para mejorar la fluidez de la escritura a mano, En onTouchEvent, todos los puntos en el proceso de transferencia de la capa inferior a la capa superior se pueden obtener a través de getHistorySize en MotionEvent.

No se puede usar la instrucción switch-case para acceder al ID de recurso en la biblioteca de Android: No se puede usar la instrucción switch-case para acceder al ID de recurso en la biblioteca de Android. El análisis de motivo y la solución
no pueden mostrar PopupWindow y Dialog cuando la actividad no se muestra completamente: ventana emergente: problemas para crear una ventana emergente en la actividad de Android
No utilice SharedPreferences para compartir datos entre varios procesos. Aunque puede (MODE_MULTI_PROCESS), es extremadamente inestable: android-MODE_MULTI_PROCESS para SharedPreferences no funciona
A veces no puede usar el contexto de la aplicación, o obtendrá un error (como inicio) Actividad, diálogo de visualización, etc.)
(Este artículo es para transporte y aprendizaje)

Supongo que te gusta

Origin blog.csdn.net/weixin_44941105/article/details/106979063
Recomendado
Clasificación