Uso en profundidad de la habilidad intermedia de Hongmeng (conocimiento básico del desarrollo de HarmonyOS Hongmeng)

Capacidad

La capacidad es una abstracción de las funciones que pueden proporcionar las aplicaciones HarmonyOS. Las capacidades de las aplicaciones HarmonyOS se dividen en dos tipos: Capacidad de funciones y Capacidad de partículas. Feature Ability representa una función con una interfaz de usuario y está diseñada para interactuar con los usuarios. Particle Ability significa que no hay capacidad de interfaz de usuario y se utiliza principalmente para proporcionar soporte para FA, por ejemplo, proporcionando funciones informáticas como un servicio en segundo plano o proporcionando funciones de acceso a datos como un repositorio de datos. Las dos funciones le proporcionan diferentes plantillas para que pueda implementar diferentes funciones. Actualmente, HarmonyOS proporciona los siguientes tipos de plantillas de capacidad:
Nota: En la descripción siguiente, las funciones de página, servicio o datos se refieren a funciones que utilizan la plantilla correspondiente, mientras que las funciones individuales se refieren a funciones que utilizan cualquier tipo de plantilla.

  • Página: muestra la función de la interfaz de usuario. La interfaz de usuario se presenta a través de AbilitySlice. Debe anular el método onStart (ohos.aafwk.content.Intent) y utilizar los métodos setMainRoute (java.lang.String) y addActionRoute (java.lang.String, java.lang.String) para configurar la entrada de la función de página.

  • Servicio: una función que se ejecuta en segundo plano y no tiene interfaz de usuario. Se utiliza para desarrollar servicios que siempre se ejecutan en segundo plano o conectados a otras funciones. Cuando la capacidad de servicio está conectada con otras capacidades, se devolverá un objeto remoto y puede usar el objeto remoto para llamar a la función proporcionada por la capacidad de servicio.

  • Datos: una función para manipular datos sin IU. Proporciona métodos para insertar, eliminar, actualizar y consultar datos y abrir archivos. Debe implementar estos métodos.


Introducción a la habilidad

Cada aplicación tiene un archivo de configuración: config.json. El archivo se almacena en el directorio raíz del código Java.

Captura de pantalla 2020-09-22 3.13.14 por la tarde.png

La descripción de la estructura del archivo de la aplicación es la siguiente:

Esta entrada almacena el código de la aplicación, los archivos de recursos y los archivos de configuración. El nombre de la carpeta es editable.

entry / libs almacena archivos de bibliotecas de terceros. Al crear un proyecto, el IDE generará automáticamente este directorio.

entry / src / main / java se utiliza para el desarrollo de código. Puede cambiar el nombre del archivo en este directorio según sea necesario. Al crear un proyecto, el IDE generará automáticamente este directorio.

entry / src / main / resources / base / media almacena archivos de imagen PNG y JPG para su aplicación. Al crear un proyecto, el IDE generará automáticamente este directorio.

entry / src / main / resources / base / element almacena archivos de recursos que se utilizan para leer recursos de texto. Al crear un proyecto, el IDE generará automáticamente este directorio.

El archivo de entrada / src / main / config.json se encuentra en el directorio raíz principal. Este archivo contiene información de configuración sobre la aplicación. El sistema ejecuta la aplicación y muestra el contenido en la interfaz de usuario según el contenido de este archivo. Al crear un proyecto, el IDE generará automáticamente este archivo.

Para desarrollar una nueva capacidad, debe registrar la capacidad en el archivo config.json. Código de muestra:

 {
     "module":{
         ...
         "abilities":[
           {
               ...
               "description": "Main ability of hiworld",
               "name": ".MainAbility",
               "label": "main ability",
               "icon": "main-ability.png",
               "type": "page",
               "visible": true,
               "orientation": "unspecified",
               "launch-mode": "standard",
               ...
           }
         ]
         ...
     }
 }
 

Nota: Todas las funciones de la aplicación deben registrarse en este archivo y adjuntarse a la etiqueta de función.

  • La etiqueta de tipo indica el tipo de plantilla utilizada por la capacidad, y su página de valor, servicio o proveedor indica la página, servicio o plantilla de datos respectivamente. Debe especificarse la etiqueta de tipo.
  • La etiqueta de nombre indica el nombre de la capacidad y debe especificarse.
  • Puede mantener los valores predeterminados de las otras etiquetas.

Ciclo de vida de la capacidad

Como unidad básica de la aplicación, la función tiene los siguientes cuatro estados de ciclo de vida:

  • Inicial: la capacidad se carga en la memoria pero no se ejecuta. Este es el estado inicial de todas las habilidades.
  • Inactivo: la función se carga y ejecuta, pero no es interactiva. Por lo general, se encuentra en un estado intermedio antes de que la capacidad cambie a ACTIVE o Background. En este estado, la interfaz de usuario puede estar visible, pero no puede recibir eventos de entrada.
  • Actividad: esta función es visible e interactiva. Piensa que esta habilidad tiene foco.
  • Trasfondo: esta habilidad es invisible. Si la memoria del sistema es insuficiente, la función en este estado se destruirá primero.

La siguiente figura muestra el ciclo de vida completo de la capacidad. Cada transición de estado ejecutará una devolución de llamada específica. Puede anular el método de devolución de llamada.

image.png

Se prohíbe la reimpresión no autorizada


Para intercambios más técnicos, únase al grupo QQ

Nombre del grupo: harmonyos Hongmeng Technology Exchange
Group number: 856567895


Nota: Todas las funciones de la página deben implementar onStart (ohos.aafwk.content.Intent) para configurar su interfaz de usuario. Para anular el método de devolución de llamada del ciclo de vida, primero debe llamar al método de devolución de llamada correspondiente a la clase principal, como super.onStart (). La transición de estado se implementa en el hilo principal. Por lo tanto, se recomienda que realice una lógica corta en la devolución de llamada del ciclo de vida para evitar que se bloquee el hilo principal de la función.

 public class MainAbility extends Ability {
      protected void onStart(Intent intent);
 
      protected void onActive();
 
      protected void onInactive();
 
      protected void onForeground(Intent intent);
 
      protected void onBackground();
 
      protected void onStop();
  }
         Button button = new Button(this);
         button.setClickedListener(listener -> {
             Operation operation = new Intent.OperationBuilder()
                     .withDeviceId("")
                     .withBundleName("com.huawei.hiworld")
                     .withAbilityName("com.huawei.hiworld.MainAbility")
                     .build();
 
             Intent intent = new Intent();
             intent.setOperation(operation);
             intent.setParam("age", 10);
 
             startAbility(intent);
         });
 

Para las funciones de servicio, puede anular el método onConnect (ohos.aafwk.content.Intent) para proporcionar un RemoteObject para llamar. De forma predeterminada, se devuelve nulo.

     protected IRemoteObject onConnect(Intent intent) {
         return null;
     }

Se prohíbe la reimpresión no autorizada


Para intercambios más técnicos, únase al grupo QQ

Nombre del grupo: harmonyos Hongmeng Technology Exchange
Group number: 856567895


Empiece de cero para aprender sobre el desarrollo de HarmonyOS Hongmeng 2.0

Supongo que te gusta

Origin blog.csdn.net/iCloudEnd/article/details/108734193
Recomendado
Clasificación