以编程方式让所有进程在黑莓上运行

Posted

技术标签:

【中文标题】以编程方式让所有进程在黑莓上运行【英文标题】:Programmatically get all processes running on blackberry 【发布时间】:2012-09-22 07:43:11 【问题描述】:

以编程方式,我该怎么做:

a) 找到我的 Blackberry 上运行的所有进程?

b) 哪些进程在后台运行?

是否有我可以查看的 api 或文档,或者可以获得编码示例?

提前感谢您的帮助

【问题讨论】:

【参考方案1】:

Take a look at this answer,请务必注意实际答案下方的评论。您需要请求设备上的所有模块句柄,然后检查每个模块句柄是否正在运行。

另外,see this BlackBerry forum response,这里引用的内容,因为它是一个非 SO 网站:


    获取所有模块句柄(可能没有兄弟姐妹) 遍历句柄列表并过滤掉库类型(留给我们 CLDC/Midlet) 获取应用描述符(主)和关联的 PID 如果 PID 存在,则暗示进程正在运行(可能是可见或不可见的隐藏后台进程,无 UI)。

另一个相关的 API 是 ApplicationManager.getVisibleApplications(),它允许您列出正在运行的可见应用(不是后台服务)。

至于哪些在后台,你会从上面得到进程ID,然后你可以对照当前的前台进程ID检查那些(只有一个可以在前台......所有其他都在后台)。从ApplicationManager.getForegroundProcessId()获取前台进程ID

【讨论】:

感谢您的回复和帮助。 int[] getModules = CodeModuleManager.getModuleHandles();给我数字,例如 [l@f91e18c8 和 [f4@34fgj7 等等。如何打印出应用程序的实际名称,例如“消息”、“电话”、“Facebook”等 @BirthOfTragedy,一旦你有了模块句柄(这不是一个名字,只是一个模块的引用),那么你可能会使用other methods in CodeModuleManager,或者尝试类似ApplicationDescriptor.getName(),使用example on SO here【参考方案2】:
This code will help you to find out current running applications

ApplicationManager appMan = ApplicationManager.getApplicationManager();
        ApplicationDescriptor appDes[] = appMan.getVisibleApplications();

        for (int i = 0; i < appDes.length; i++) 
        
                  result = appDes[i].getModuleName();
          System.Out.Println("Currently Running application " +result ) 
        

【讨论】:

以上是关于以编程方式让所有进程在黑莓上运行的主要内容,如果未能解决你的问题,请参考以下文章

如何在黑莓上突出显示焦点自定义按钮域(ImageButtonField)?

如何防止应用程序在黑莓中启动

黑莓推出原生网络浏览器

如何在黑莓手机中测试黑莓应用程序

有没有办法在黑莓中以字符串的形式获取异常的堆栈跟踪?

如何在黑莓中运行工作灯的本机代码[关闭]