是否可以创建在 symbian 智能手机上用作后台进程的 java 应用程序?
2 回答
您可以对其进行近似,但 J2ME(手机上的 java 版本)可能不是执行此操作的正确技术。
在手机开机时启动一个 MIDlet(一种用于手机的 Java 应用程序)充其量是很棘手的,除非编写一个小型 Symbian OS C++ 模块来为您启动它。如果您仍然想尝试,请查看 MIDP 规范 ( http://java.sun.com/javame/reference/apis/jsr118/ ) 中的 PushRegistry 类。内容处理 API 也可能提供一些方法来做到这一点 ( http://java.sun.com/javame/reference/apis/jsr211 )。当你准备放弃时,用 C++ 来做。
后台 MIDlet 并不难。手机的“菜单”键将为您完成。以编程方式, Canvas.setCurrent(null) 有很好的工作机会。试图通过提供完全透明的 GUI 并且不处理任何键盘活动来欺骗电话绝对行不通。在 MIDlet 中创建和启动一个单独的线程应该允许您在应用程序管理系统调用 MIDlet.pauseApp() 的重载之后保持运行。
真正的问题是 MIDlet 不会有任何进程间通信系统,除非你自己做一个。这样做的常用方法是通过其传输数据的环回套接字连接。不是模拟 IPC 的好方法或有效方法。我认为只能在同一个 MIDlet 套件中共享 RMS 记录(您可以将多个 MIDlet 打包到同一个 .jar 文件中)。通过文件连接创建提供者/消费者数据流的代码更加难看,并且会引发安全问题。
如果没有更多关于你想用它做什么的信息,我的回答是:也许但你可能不应该尝试。
您将在 MIDP 3.0 ( http://jcp.org/en/jsr/detail?id=271 )中获得对后台 MIDlet 的内置 MIDP 支持。但是,不要屏住呼吸等待设备出现 - 可能需要一段时间。(请注意,一些 Symbian OS 设备不仅具有 MIDP - 例如 SE p990,https://developer.sonyericsson.com/site/global/products/phonegallery/p990/p_p990.jsp)。
正如已经指出的那样,获得有关您尝试实现的产品功能的更多信息可能会有所帮助——通常不止一种给猫剥皮的方法。