Resumen de los problemas de desarrollo diarios de Android: ¡Estos problemas no son lo suficientemente calientes, y se eliminan y desaparecen en cualquier momento!

Encontré varios problemas de desarrollo en el desarrollo diario, elegí algunos de ellos y los compartí. Algunos problemas son muy simples y pertenecen a estándares de codificación, y algunos son problemas que se encuentran en situaciones específicas y no son muy comunes. Lugares inexactos, bienvenidos a discutir juntos ~

1.requestFeature () se debe llamar antes de agregar contenido

requestWindowFeature(Window.FEATURE_NO_TITLE);// 隐藏标题

Debe llamarse antes de onCreate; de ​​lo contrario, se informará un error en el modelo 4.4.2:

2. El sistema Mi 6.0 se bloquea al abrir el navegador

Llamar a startActivity () desde fuera de un contexto de actividad requiere el indicador FLAG_NEW_TASK.

public static void openBrowser(Context context, String url) {
    Uri uri = Uri.parse(url);
    Intent intent = new Intent(Intent.ACTION_VIEW, uri);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(intent);
}

Eso es para agregar FLAG_ACTICITY_NEW_TASK arriba (otros teléfonos lo ven como correcto)

3. La configuración del valor de color de TextView no es válida

   titleTv.setTextColor(colorId);//错误的方式(常见封装类调用)
   titleTv.setTextColor(ContextCompat.getColor(context,colorId));//正确的方式

4. Problema de citas internacionales

a. Las variables globales estáticas / de clase deben juzgarse por separado;
b. el efecto del espacio de texto chino de la cadena no se puede reflejar, agregue comillas dobles a la cadena

<string name="Chinese"> 中   文 </string>
<string name="Chinese">" 中   文 "</string>

Nota: Con el método Application.getString, después de cambiar el idioma, el contenido del recurso al que hace referencia este método no se cambia. Se puede cambiar al método getString en otra actividad para obtener

5. El sistema Meizu 7.0 se bloquea después de hacer clic en la vista web

ActivityManagerForce removing ActivityRecord{6dd5804 u0 包名/当前WebviewActivity t8819}: app died, no saved state

No es compatible con el método onCustumView, simplemente elimínelo

6. El inglés del botón está en mayúsculas de forma predeterminada.

android:textAllCaps="false"

7. Después de recibir el empuje en vivo, la página especificada no se puede abrir (no hay respuesta en absoluto)

El sistema aparecerá automáticamente, pero solo ingrese la configuración y ábralo.

8. TextView no se muestra completamente

TextView usa WrapContent, lines = 1, pero el contenido no se muestra por completo,
solo se puede mostrar en una parte de la pantalla y la parte fuera de la pantalla no está disponible cuando se extrae la animación de atributos.
(Este tipo de problema ocurre al personalizar el control de marquesina)

public static int getTextViewLength(TextView view, String text) {
    TextPaint paint = view.getPaint();
    int textLength = (int) Layout.getDesiredWidth(text, 0, text.length(), paint);
    return textLength;
}

Luego establezca el ancho de TextView.

9. No se encontró ninguna actividad para manejar la intención {act = android.intent.action.VIEW_DOWNLOADS flg = 0x10000000}

El sistema Samsung SM-C7000 (C7) 6.0.1 aparecerá en este problema

if(intent.resolve(context.getPackageManager))!=null){
...
}

Cuando se usa la intención implícita para startActivity, es mejor agregar este tipo de juicio e intentar atrapar , porque es un problema si no está seguro de qué modelo

10. Establecer la esquina del diálogo

getWindow().setBackgroundDrawableResource(R.drawable.widget_dialog_round_corner);

11. Los modelos Samsung informan de un error E / rsC ++ (16241): Error de RS CPP: Radio de desenfoque fuera del límite de 0-25 píxeles

La idea principal es que el shadowRadius de TextView no puede ser mayor que 25, lo cual es un problema en el código xml, simplemente cambie el shadowRadius a un valor menor.

El desenfoque de la parte debajo del botón también se debe a este problema.

12. Al compartir un enlace a WeChat, la miniatura del enlace no se puede mostrar

Si el contenido del enlace para compartir de Umeng contiene sobres rojos, la imagen no será válida y no se mostrará (el tema del intercambio puede verse por sí mismo)

13. La aplicación en el teléfono móvil Xiaomi no se puede descargar e instalar normalmente cuando se usa el navegador para abrir la dirección con el sufijo apk

Las direcciones de Alibaba Cloud y Appbao serán interceptadas para descargar e instalar usando el descargador que viene con el sistema de teléfono móvil Xiaomi, y este descargador usará el componente de descarga Thunder de forma predeterminada. Después de descargar la dirección de Alibaba Cloud, haga clic en el botón después de que se complete la descarga. El archivo no se puede reconocer (y la dirección del tesoro de la aplicación se puede instalar normalmente), la dirección de descarga de las aplicaciones Xiaomi y Huawei y la dirección que no termina con .apk saltará al navegador para descargar de acuerdo con el proceso normal. Después de desactivar la función del componente de descarga Thunder en el teléfono móvil Xiaomi, puede hacer clic en presionar para instalarlo normalmente, y no habrá problemas de archivos no reconocidos.

Entonces, la solución a este problema es muy simple, simplemente cambie la dirección de descarga a una dirección final que no sea apk .

14. La razón por la que no se reemplazan los íconos del escritorio

android:roundIcon="@mipmap/logo"

Este atributo en la aplicación también debe establecerse

15. Optimice el problema de la pantalla blanca al abrir la aplicación.

El motivo de la pantalla blanca es que el sistema en sí tarda en iniciarse (el fondo es blanco de forma predeterminada).
Práctica general:

Configurar tema

<style name="MNoActionBar" parent="Theme.AppCompat.NoActionBar">
    <!--<item name="android:windowFullscreen">false</item>-->
    <!--<item name="android:windowBackground">@drawable/welcome</item>//此行可以给window设置背景图片,单独设置此项不设置透明的话是没有延迟打开的情况(无白屏切换,和启动页使用同一资源则无缝切换,但默认是全屏的)-->
    <item name="android:windowIsTranslucent">true</item>//设置透明之后不会有和页面背景图之间色值的闪烁,同时点击桌面图标时会有些延迟进入页面
</style>

Para una actividad específica: si una actividad necesita mostrar un diagrama de inicio a pantalla completa, pero también mostrar el contenido más reciente (no a pantalla completa) después de que se cargue el contenido, entonces se deben evaluar y configurar los métodos relevantes:

private void setFullScreenEnable(boolean isEnable) {
    if (isEnable) {
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); //隐藏状态栏
    } else {
        getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); //显示状态栏
    }

}

Si está en una página con una vista web, puede configurarla en el método onCreate y en la devolución de llamada onpageFinished respectivamente.

Caso especial: si se carga la página completa H5, incluso si se utilizan los ajustes anteriores, seguirá habiendo una pantalla blanca parpadeando. Esto se debe a la representación de la página H5 en sí, por lo que el método de procesamiento actual es hacer un efecto de rechazo de demora para la página de inicio, para cubrir el momento en que la pantalla blanca parpadea:

fullLoadingView.postDelayed(new Runnable() {//需要做下延迟,否则会出现页面一瞬间白屏的情况(应该是页面渲染H5的原因)
    @Override
    public void run() {
        fullLoadingView.setVisibility(View.GONE);
        setFullScreenEnable(false);
    }
}, 300);

16. Al abrir una aplicación externa, se abren varias páginas

Cuando la aplicación B abre la actividad de la aplicación A, también se abrirán otras actividades de la aplicación A (existente antes, la aplicación A ha estado en segundo plano).
Esto se debe a taskAffinity, porque comparte la misma pila de tareas, por lo tanto, establezca otra en el archivo de manifiesto Una pila de tareas es suficiente:

android:taskAffinity=".payAct"

17. Obtenga el mapa de bits de la vista web

Establezca la altura de la vista web de acuerdo con la altura de la página web obtenida. Al mismo tiempo, h5 se adapta bien y el ancho y la altura se escalan proporcionalmente. Al mismo tiempo, puede suceder que haya contenido de interfaz de usuario en blanco en la información de mapa de bits obtenida. En este momento, es necesario retrasar la adquisición, porque el método onPageFinished solo extrae el código, y no significa que la página se renderice. .

webSetting.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL);

Cuando se establece en NARROW_COLUMNS, si la vista web en sí no es de pantalla completa, las imágenes compartidas no pueden ocupar la pantalla completa.

18.Error inflando clase ImageView

Xml definitivamente no es incorrecto, pero ¿por qué la versión alta está bien, pero la versión baja informa un error?

Esto se debe a que los archivos de recursos de imagen se colocan en la carpeta de la versión baja, por lo que la versión alta no está disponible.

19.EditText digits propiedad

android:digits="0123456789"

A menudo se utiliza para limitar el formato de entrada de EditText.

20. Los resultados de la búsqueda global de Android Studio están incompletos

Razón de almacenamiento en caché

21. bottomSheetDialog establece esquinas redondeadas

<style name="BottomSheetDialog" parent="Theme.Design.Light.BottomSheetDialog">
    <item name="bottomSheetStyle">@style/bottomSheetStyleWrapper</item>
</style>
<style name="bottomSheetStyleWrapper" parent="Widget.Design.BottomSheet.Modal">
    <item name="android:background">@android:color/transparent</item>
</style>

new BottomSheetDialog(context,R.style.BottomSheetDialog)//设置style

22. El layout_weigt de LinearLayout en ScrollView no es válido

Agregar en ScrollView:

android:fillViewport="true" 

23.Process 'command' E: \ android \ tool \ sdk \ build-tools \ 26.0.3 \ aapt.exe '' terminó con un valor de salida distinto de cero 1

Reiniciar para borrar el caché, compilar y mejorar la versión no son válidos, ¡la razón es que la codificación no está estandarizada!

android:drawableTop="2dp" //错误代码!!!

En general, si ocurre el problema, puede comparar el historial del archivo para ver qué archivo de recursos hace referencia y otras irregularidades, si no puede encontrarlo, simplemente revierte la versión para ver.

24. El problema de la visualización incompleta de TextView en el diálogo

Esto se debe a que contentTv.setText (Html.fromHtml (content));
se usa en lugar del contentTv.setText (content) directo; el
salto de línea del primero también es inútil, y puede deberse a que el texto contiene la etiqueta HTML incorrecta. , por lo que necesita considerar la compatibilidad al usar.

25. Problema de precisión de punto flotante

Por lo tanto, es mejor utilizar BigDecimal en combinación con las condiciones comerciales.

Al final

No hace falta decir que creo que todos tenemos un consenso: no importa cuál sea la industria, la persona más poderosa es definitivamente la persona al final de la pirámide. Por lo tanto, si quieres ser un gran programador, debes ponerte más alto, convertirte en un experto técnico no es una cuestión de la noche a la mañana, requiere precipitación de tiempo y acumulación técnica.

Con respecto a este punto, cuando establecí la dirección de Android en ese momento, comencé a ordenar mi camino de crecimiento, incluido cómo aprender la tecnología de manera sistemática, que se enumeró con gran detalle.

Aquí, finalmente compartiré una serie de recursos de aprendizaje de Android que tardaron más de un año en organizarse: análisis de código fuente de Android, notas de fuente de biblioteca de terceros de Android, aprendizaje avanzado de siete temas de arquitecto de Android, paquete de análisis de preguntas de entrevista BAT a lo largo de los años, Notas de estudio maestro de Android, etc. Espera, estos contenidos se pueden compartir gratis con todos, amigos que necesitan la versión completa, haz clic aquí para ver todos los contenidos

Supongo que te gusta

Origin blog.csdn.net/weixin_44339238/article/details/112477932
Recomendado
Clasificación