【发布时间】:2010-12-30 09:38:52
【问题描述】:
我想创建一个后台应用程序,它会监听哪些应用程序已启动以及哪些应用程序被移至前台。
请回复 如果问题不清楚将再次解释。
谢谢
【问题讨论】:
标签: blackberry integration process background-application
我想创建一个后台应用程序,它会监听哪些应用程序已启动以及哪些应用程序被移至前台。
请回复 如果问题不清楚将再次解释。
谢谢
【问题讨论】:
标签: blackberry integration process background-application
这是你可以做的:
在TimerTask 中定义时间段
public class AppListenerApp extends Application {
int mForegroundProcessId = -1;
public AppListenerApp() {
Timer timer = new Timer();
timer.schedule(mCheckForeground, 2000, 2000);
}
public static void main(String[] args) {
AppListenerApp app = new AppListenerApp();
app.enterEventDispatcher();
}
TimerTask mCheckForeground = new TimerTask() {
public void run() {
int id = getForegroungProcessID();
if(id != mForegroundProcessId)
{
mForegroundProcessId = id;
String name =
getAppNameByProcessId(mForegroundProcessId);
showMessage(name);
}
};
};
private int getForegroungProcessID() {
return ApplicationManager.getApplicationManager()
.getForegroundProcessId();
}
private String getAppNameByProcessId(int id) {
String result = null;
ApplicationManager appMan =
ApplicationManager.getApplicationManager();
ApplicationDescriptor appDes[] =
appMan.getVisibleApplications();
for (int i = 0; i < appDes.length; i++) {
if (appMan.getProcessId(appDes[i]) == id) {
result = appDes[i].getName();
break;
}
}
return result;
}
private void showMessage(String message) {
synchronized (Application.getEventLock()) {
Dialog dlg = new Dialog(Dialog.D_OK, message,
Dialog.OK, null, Manager.FIELD_HCENTER);
Ui.getUiEngine()
.pushGlobalScreen(dlg, 1, UiEngine.GLOBAL_QUEUE);
}
}
}
【讨论】: