blackberry process background-application

BlackBerry: obtenga la identificación del proceso actual



process background-application (1)

Leí Blackberry: cómo obtener el ID del proceso de solicitud de fondo, pero no estoy seguro de entenderlo correctamente. El siguiente código obtiene la identificación del proceso en primer plano;

ApplicationManager.getApplicationManager().getForegroundProcessId()

Tengo dos procesos que ejecutan el mismo código para hacer una conexión, quiero registrar el proceso que realizó las llamadas junto con todos mis datos de registro habituales para tener una mejor idea de cómo funciona el flujo.

¿Es posible obtener la identificación para el proceso que actualmente está ejecutando el código? Un proceso está en primer plano (proceso de IU) y el otro está en segundo plano, pero ambos usan la misma biblioteca de conexiones compartida a través del almacén de tiempo de ejecución.

¡Gracias por adelantado!

Gav


Entonces tiene tres módulos: aplicación, biblioteca y servicio.
Debe obtener descriptor por nombre de módulo y luego obtener ID de proceso.

ACTUALIZACIÓN1

String moduleName = "application"; int handle = CodeModuleManager.getModuleHandle(moduleName); ApplicationDescriptor[] descriptors = CodeModuleManager .getApplicationDescriptors(handle); if (descriptors.length > 0 && descriptors[0] != null) { ApplicationManager.getApplicationManager().getProcessId(descriptors[0]); }

Luego, para registrar qué módulo usa la biblioteca, use

Application.getApplication().getProcessId();

dentro de los métodos de la biblioteca. Creo que es mejor implementar el registro dentro de la biblioteca.
Cuando obtenga la identificación del proceso de la aplicación del código de la biblioteca, puede compararla con la identificación que se encuentra por nombre del módulo y luego sabrá qué módulo usa el código de la biblioteca.
ACTUALIZACIÓN2
texto alternativo http://img138.imageshack.us/img138/23/eventlog.jpg
código del módulo de la biblioteca:

package library; import net.rim.device.api.system.Application; import net.rim.device.api.system.ApplicationDescriptor; import net.rim.device.api.system.ApplicationManager; import net.rim.device.api.system.CodeModuleManager; import net.rim.device.api.system.EventLogger; public class Logger { // "AppLibSrvc" converted to long long guid = 0xd4b6b5eeea339daL; public Logger() { EventLogger.register(guid, "AppLibSrvc", EventLogger.VIEWER_STRING); } public void log(String message) { EventLogger.logEvent(guid, message.getBytes()); } public void call() { log("Library is used by " + getModuleName()); } private String getModuleName() { String moduleName = ""; String appModuleName = "application"; int appProcessId = getProcessIdByName(appModuleName); String srvcModuleName = "service"; int srvcProcessId = getProcessIdByName(srvcModuleName); int processId = Application.getApplication().getProcessId(); if (appProcessId == processId) moduleName = appModuleName; else if (srvcProcessId == processId) moduleName = srvcModuleName; return moduleName; } protected int getProcessIdByName(String moduleName) { int processId = -1; int handle = CodeModuleManager.getModuleHandle(moduleName); ApplicationDescriptor[] descriptors = CodeModuleManager .getApplicationDescriptors(handle); if (descriptors.length > 0 && descriptors[0] != null) { processId = ApplicationManager.getApplicationManager() .getProcessId(descriptors[0]); } return processId; } }

código del módulo de aplicación:

package application; import java.util.Timer; import java.util.TimerTask; import library.Logger; import net.rim.device.api.ui.UiApplication; import net.rim.device.api.ui.container.MainScreen; public class App extends UiApplication { public App() { pushScreen(new Scr()); } public static void main(String[] args) { App app = new App(); app.enterEventDispatcher(); } } class Scr extends MainScreen { public Scr() { Timer timer = new Timer(); TimerTask task = new TimerTask() { public void run() { Logger logger = new Logger(); logger.call(); } }; timer.schedule(task, 3000, 3000); } }

código del módulo de servicio:

package service; import java.util.Timer; import java.util.TimerTask; import library.Logger; import net.rim.device.api.system.Application; public class App extends Application { public App() { Timer timer = new Timer(); TimerTask task = new TimerTask() { public void run() { Logger logger = new Logger(); logger.call(); } }; timer.schedule(task, 3000, 3000); } public static void main(String[] args) { App app = new App(); app.enterEventDispatcher(); } }