conocimiento para arriba! 90% desarrolladores de Android no sabe el conocimiento frío del desarrollo de Android

1. AAAA y aaaa no es lo mismo

A 31 de diciembre de 2019, por ejemplo:

aaaa-MM-dd: 12/31/2019

AAAA-MM-dd: 12/31/2020

Creo que ya conoce, muchos de los pesos pesados ​​están escritos en detalle para explicar el artículo, sino también ver directamente el SimpleDateFormat oficial explicación.

En pocas palabras: Y se refiere Semana años, representa el año de la semana pertenece; usamos todos los días del año está representado por y.

2. getReadableDatabase se abre la base de datos de sólo lectura

Android en getWritableDatabase () y getReadableDatabase método () puede ser adquirido ejemplo SQLiteDatabase.

Pero getReadableDatabase () no se abre la base de datos de sólo lectura, pero la primera ejecución getWritableDatabase (), sólo para la base de datos de sólo lectura abierta en caso de fallo ..

Fuente de la siguiente manera:

public synchronized SQLiteDatabase getReadableDatabase() {
    // ...
    try {
        // 执行 getWritableDatabase() , 若出现异常,以只读方式打开数据库
        return getWritableDatabase();
    } catch (SQLiteException e) {
        if (mName == null) throw e;  
    }
    SQLiteDatabase db = null;
    try {
        // ... 
        // 以只读方式打开数据库
        db = SQLiteDatabase.openDatabase(path, mFactory, SQLiteDatabase.OPEN_READONLY);
        // ... 
        mDatabase = db;
        return mDatabase;
    } finally {
        // ... 
    }
}

3. El niño no puede actualizar necesariamente el hilo de interfaz de usuario

Visita la interfaz de usuario de Android no está bloqueado, cuando el acceso de múltiples hilos no es seguro. Por lo tanto, las disposiciones sólo pueden acceder a la interfaz de usuario en el hilo de interfaz de usuario.

Responsable de comprobar el hilo es ViewRootImpl de checkThread () método:

void checkThread() {
    if (mThread != Thread.currentThread()) {
        throw new CalledFromWrongThreadException(
                "Only the original thread that created a view hierarchy can touch its views.");
    }
}

Sin embargo, después ViewRootImpl creado en onResume () de devolución de llamada. Así que antes de onResume (), también es un sub-hilo puede actualizar la interfaz de usuario.

Incluso después de ViewRootImpl creado, no llaman checkThread (), actualizar sub-hilo también no se queja.

Sin embargo, no desarrollar o actualizar la interfaz de usuario cuando el hilo hijo.

4. Ver el código no es nueva identificación

archivo de diseño de Android a través de la identificación + @, R puede ser generado en un archivo que corresponde al valor de Int, para garantizar la singularidad de los recursos en tiempo de ejecución, pero el nuevo código dinámico Ver ningún id.

Si necesita utilizar su ID, puede llamar a un método Ver generateViewId () para generar id (API17 +), en lugar de generar un valor específico o de escritura a mano con un número aleatorio.

5. Ver la devolución no es necesariamente getContext Actividad

Actividad La actividad es en cierto setContentView;

Mediante la adición de nueva vista, View.inflate, LayoutInflater.inflate esto de varias maneras Vista, cuando predicamos la participación de las masas es qué contexto, vista de lo que es el contexto.

En el sistema de teléfono móvil versión 5.0 o menos, y la actividad heredada de AppCompatActivity, entonces getConext método Ver, la devolución no haría sino Actividad TintContextWrapper.

6. RemoteViews y no tienen nada Ver

RemoteViews proporciona una base para la operación de actualización de procesos cruzados, sobre todo para las barras y de escritorio widgets de notificación de desarrollo.

Desde el nombre, creo que debería ser una vista remota. De hecho, el código fuente es el siguiente:

public class RemoteViews implements Parcelable, Filter {
    // ...
}

Con todo, RemoteViews es operar los controles de proceso transversal y proporcionar una gama de métodos de la clase.

7. tipo booleano ocupa unos pocos bytes

La información real en Java booleano indica uno: 1 para el verdadero, 0 representa falsa. Sin embargo, Java documento de especificación del tipo de datos no define con precisión las variables booleanas tamaño de memoria real.

Su tamaño asociado con una máquina virtual, puede estar seguro de que no sería ni un poco.

Java Virtual Machine recomendaciones son las siguientes:

  1. tipos booleanos se compilan utilizar un int, es de cuatro bytes.
  2. matrices booleanas se compilan en byte tipo de matriz, cada miembro de matrices booleanas representó un byte

8. RecyclerView archivo de diseño se puede especificar con spanCount LayoutManager

RecyclerView archivo de diseño se puede especificar con spanCount LayoutManager

<declare-styleable name="RecyclerView">        
    <attr name="layoutManager" format="string" />
    <attr name="android:orientation" />
    <attr name="spanCount" format="integer"/>
    <attr name="reverseLayout" format="boolean" />
    <attr name="stackFromEnd" format="boolean" />
</declare-styleable>

ATTR sus propiedades que se pueden especificar LayoutManager, spanCount, la orientación de. No tenemos que configurar en el código.

9.-9 imágenes de parche se padding de

patrón NinePatchDrawable es un mapa de bits estirable, que puede ser utilizado como el fondo de la vista. Android se ajustará automáticamente el tamaño de la imagen para que cubra la vista de contenido. Contiene un marco adicional de 1 píxel, debe utilizar la extensión 9.png la salvará en el res / estirable / directorio del proyecto.

Línea de acción:

A la izquierda en: la definición de quién está autorizado a copiar los píxeles de la imagen a la imagen ajuste.

Derecha, abajo: colocar el área de vista con relación a definir el contenido de la imagen permitido.

Por lo tanto, las imágenes 9-parche puede incluir relleno, si el control no se establece explícitamente, la imagen se puede utilizar como relleno de control de relleno.

Así que, a veces, androide: acolchado = "0DP" La escritura fue también escrito.

10. El interruptor de aceleración de hardware no donde puede

La aceleración de hardware que depende directamente de la GPU para lograr acelerado de procesamiento de gráficos. Desde la introducción de procesamiento de GPU no sólo mejorar la eficiencia, sino también debido a cambios en el mecanismo de extracción, lo que eleva la eficiencia de los cambios en el contenido de actualización de interfaz.

En el que comienza la aceleración de hardware Android4.0 activado por defecto, se puede controlar manualmente la apertura y cierre:

Tenga en cuenta que:

Ventana nivel de aceleración de hardware sólo se puede abrir no está cerca; vista de clase no sólo cerrado a abierto.

Control de aplicaciones y Actividad

nodo de la aplicación o actividad se añade en el archivo AndroidManifest

android:hardwareAccelerated="true"

control de la ventana

getWindow().setFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED)

control de vista

view.setLayerType(View.LAYER_TYPE_SOFTWARE,null);

Pregunta de si a la aceleración de hardware abierto

View.isHardwareAccelerated()
Canvas.isHardwareAccelerated()

11. Uso getVisibility () determina si el usuario puede ver no es bueno

getVisibility () determina si él mismo es el único estado de visualización. Pero si no es visible para los padres hacer?

Con el método isShown () es más apropiado, determina primero la corriente Vista En la bandera, y luego bucles para obtener la matriz Vista, el juicio no es visible. Mientras uno no es visible, se devuelve falso.

Fuente de la siguiente manera:

public boolean isShown() {
    View current = this;
    //noinspection ConstantConditions
    do {
        if ((current.mViewFlags & VISIBILITY_MASK) != VISIBLE) {
            return false;
        }
        ViewParent parent = current.mParent;
        if (parent == null) {
            return false; // We are not attached to the view root
        }
        if (!(parent instanceof View)) {
            return true;
        }
        current = (View) parent;
    } while (current != null);
    return false;
}

Una gran cantidad de conocimiento proviene de varios peces gordos del blog en línea, algunos han olvidado dónde ver, y esto también rendir homenaje a los peces gordos de nuevo!

Si este artículo útil para usted, pero también la esperanza se puede apuntar un elogio Ha ~ ~

Gracias Dime mucho lo que se puede ver aquí, aquí tengo un hermano mayor para compartir su propia colección de terminar Android estudiar notas arquitectura PDF + Video + Entrevista + de origen de documentos , así como la arquitectura técnica avanzada Brain Mapping, entrevista Android informaciones desarrollo temático senior de información de esquema avanzado estos son mis anchas leerá repetidamente el material fino. En el mapa de la mente, cada punto está equipado con un conocimiento del tema correspondiente al proyecto real, puede ayudar eficazmente a captar los puntos de conocimiento.

En resumen también estamos aquí para ayudar a mejorar el aprendizaje avanzado, pero también le ahorra el tiempo para aprender los datos de búsqueda en línea también se pueden compartir con amigos cercanos estudiar juntos

Si usted tiene una necesidad, se puede comentar sobre , sígueme , haga clic aquí o añadir Vx: 15388039515 (Nota CSDN, información de necesidad)

imagen

imagen

imagen

imagen

Publicados 200 artículos originales · ganado elogios 83 · Vistas a 70000 +

Supongo que te gusta

Origin blog.csdn.net/weixin_45258969/article/details/104783125
Recomendado
Clasificación