Cómo analizar el archivo xml del informe rdlc
Nota: en el modo de servidor de socket, el código fuente de phonegap.js implementa una solicitud XHR en 1 milisegundo. Cuando hay datos de declaración JS en la cola de Native JS, realmente se llama en 1 milisegundo; No hay datos, el servidor scoket se bloqueará durante 10 milisegundos, lo que significa que XHR tendrá que esperar 10 segundos para recibir los resultados y realizar la siguiente encuesta.
1. La actividad hereda DroidGap (extiende PhonegapActivity)
Cargar la configuración de la lista blanca y registrar la configuración desde phonegap.xml
2 loadUrl (cada actividad se inicializa una vez)<. /p>
》》Inicializar vista web
》》Inicializar callbackServer
》》Plugin Manager PluginManager
3. p>
》》Lea la configuración de plugins.xml y guárdela usando el mapa.
1
2
3
4
5
6 p> p>
7
< /plugins>
Nota:
nombre es un alias que se utiliza al llamar a JavaScript.
valor: clase de implementación específica de Java
Llamada a página web (como encontrar personas de Lenovo)
PhoneGap.exec(successCB, errorCB, "Contactos", " buscar ", [campos, opciones]);
4. Implementación del complemento
》》Programe la clase Java, herede la clase Complemento (el complemento implementa la interfaz IPlugin) e implemente el método de ejecución.
Por ejemplo, complemento de gestión de contactos:
1
2
3
4 p>
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 p>
30
31
32
33
34
35
36
Clase pública ContactManager extiende el complemento{
/**
* acción: se utiliza para especificar una acción de búsqueda específica para representar la búsqueda de contactos
* args: parámetros del método
* callbackId: js y java especifican un identificador,
*/
ejecución pública de PluginResult (acción de cadena , JSONArray args, String callbackId) {
prueba {
if (action.equals("search")) {
JSONArray res = contactAccessor.search( args.getJSONArray( 0), args.optJSONObject(1));
devolver nuevo PluginResult(status, res, "navigator.contacts.cast");
}
else if (action.equals("save")) {
ID de cadena = contactAccessor.save(args.getJSONObject(0));
if (id ! = null) {
JSONObject res = contactAccessor.getContactById(id);
if (res != null) {
return new PluginResult(status, res );
p>
}
}
}
else if (action.equals("eliminar")) {
if (contactAccessor.remov
e(args.getString(0))) {
devolver nuevo PluginResult(estado, resultado
}
}
); // Si llegamos a este punto ha ocurrido un error
JSONObject r = new JSONObject();
r.put("code", UNKNOWN_ERROR);
devolver nuevo PluginResult(PluginResult.Status.ERROR, r);
} catch (JSONException e) {
Log.e(LOG_TAG, e.getMessage(), e) ;
devolver nuevo PluginResult(PluginResult.Status.JSON_EXCEPTION);
}
}
}
5. Sondeo e inicialización del servidor
Al inicializar Android DroidGap, si la URL de loadUrl no comienza con file://, sondeo = verdadero; de lo contrario, es el modo de servidor de socket
Para el código, consulte el método de inicio de clase CallbackServer .java
1
2
3
4
5
6
7
8
9
10
11 p>
12
13
14
15
16
init público vacío (Cadena url) { p>
//System.out.println("CallbackServer.start("+url+")");
// Determina si se va a utilizar XHR o sondeo
if ((url != null) && !url.startsWith("file://")) {
this.usePolling = true;
this .stopServer();
}
else if (android.net.Proxy.getDefaultHost() != null) {
this.usePolling = true;
this.stopServer();
}
else {
this.usePolling = false;
this.startServer() ;
}
}
6.
Descripción del código clave negap.js
Cuando se inicia phonegap.js, primero obtendrá el método de llamada a través del mensaje ("usePolling", "gap_callbackServer:"): sondeo XHR O sondeo rápido, si es XHR , iniciará la llamada XHR para obtener el puerto y el token del servidor http.
El método PhoneGap.Channel.join inicia el servidor js o la llamada de sondeo.
UsePolling tiene como valor predeterminado falso. Obtenga el método de llamada a través de var polling = Prompt("usePolling", "gap_callbackServer:").