编辑:使用更简单的代码。 我有一个黑莓应用程序,直到最近(我在我的火炬上升级到6.0.0.600)可以删除。现在我甚至不能使用javaloader -u erase(使用中的模块)并且UI上下文菜单或物理菜单没有删除选项。下面的代码只需要一个带有参数“startVibrate”的备用入口点的app描述符。入口点代码如下。
package mypackage;
import net.rim.device.api.system.Alert;
import net.rim.device.api.system.ApplicationDescriptor;
import net.rim.device.api.system.ApplicationManager;
import net.rim.device.api.ui.container.MainScreen;
import net.rim.device.api.ui.UiApplication;
/**
* This class extends the UiApplication class, providing a
* graphical user interface.
*/
public class ScheduleAppDemo extends UiApplication
{
public static void main(String[] args)
{
if (args != null && args.length > 0 && "startVibrate".equals(args[0]))
{
scheduleVibrate();
}
else
{
ScheduleAppDemo app = new ScheduleAppDemo();
app.enterEventDispatcher();
}
}
public ScheduleAppDemo()
{
ScheduleAppDemoScreen screen = new ScheduleAppDemoScreen();
pushScreen(screen);
}
public class ScheduleAppDemoScreen extends MainScreen
{
public ScheduleAppDemoScreen()
{
setTitle("Schedule app demo");
}
}
private static void scheduleVibrate()
{
Alert.startVibrate(2550);
ApplicationDescriptor current = ApplicationDescriptor.
currentApplicationDescriptor();
current.setPowerOnBehavior(ApplicationDescriptor.DO_NOT_POWER_ON);
ApplicationManager manager = ApplicationManager.getApplicationManager();
manager.scheduleApplication(current, System.currentTimeMillis()
+ 60000, true);
}
}
基本上,这表明它每分钟都会振动。不幸的是,有证据表明应用程序管理器似乎在后续过程中保持后台进程运行,然后在再次运行时再次调用它。这是RIM的示例应用程序。删除应用程序descriptor.xml中的所有备用入口点允许删除该应用程序。除了修改它,重新加载鳕鱼,然后删除它;我该如何删除该应用程序。
答案 0 :(得分:1)
行为是“正确的”,因为这正是具有备用入口点的应用程序在字段中的行为。
当应用程序具有备用入口点时,删除它只会将其标记为删除。重新启动设备并重新加载.cods时会发生实际删除。
这就是为什么当用户尝试在后台删除具有正在运行的进程的备用入口点的应用程序时,会弹出一个对话框,让用户知道应用程序将在重新启动时被删除,并询问他们是否想立即重启。
在重启设备之前,后台进程将继续运行。