黑莓 - 运行后台应用程序 [英] Blackberry - Running Background Application
问题描述
下午好。
我开始在Java和黑莓节目。
我发展与三个窗口,我将显示有关设备的基本信息的应用程序,这些窗口都已经完成和工作。
我需要建立在后台运行,这一过程将每10分钟一趟的过程。
当我做出这个过程在后台运行,并正在关闭的窗口?
Good afternoon. I'm starting programming in java and blackberry. I am developing an application with three windows, which I will show basic information about the device, these windows are already done and working. I need to create a process running in the background, this process will run every 10 minutes. As I make this process run in the background and is working to close the windows?
这是运行应用程序的类型:
This is the kind that runs the application:
public class InfoBerry extends UiApplication{
public vtnprincipal vtnprincipal;
public vtnbateria vtnbateria;
public vtnestado vtnestado ;
public vtnacerca vtnacerca;
public InfoBerry(){
}
public static void main(String[] args) {
InfoBerry theApp = new InfoBerry();
theApp.mostrarpantalla();
}
public void mostrarpantalla(){
vtnprincipal = new vtnprincipal(this);
vtnbateria = new vtnbateria(this);
vtnestado = new vtnestado(this);
vtnacerca = new vtnacerca(this);
// Inicailizamos los componentes de la pantalla principal
vtnprincipal.incventana();
// La pnemos en lo alto de la pila de pantallas
pushScreen(this.vtnprincipal);
}
}
这是你需要在后台运行的类。
正如我必须做出调用这个类在后台运行吗?
And this is the class you need to run in the background. As I have to make the call to this class to run in the background?
class iconnoti extends MainScreen{
//icono de la temperatura
EncodedImage imgtem =
EncodedImage.getEncodedImageResource("icon_bateria_t.png");
ApplicationIcon icontem = new ApplicationIcon(imgtem);
//icono de la carga de la bateria
EncodedImage imgcarga =
EncodedImage.getEncodedImageResource("icon_bateria.png");
ApplicationIcon iconcarga = new ApplicationIcon(imgcarga);
//icono de la memoria
EncodedImage imgmemo =
EncodedImage.getEncodedImageResource("icon_memoria.png");
ApplicationIcon iconmemo = new ApplicationIcon(imgmemo);
ApplicationIcon mIcon = icontem;
boolean act;
public iconnoti() {
}
public void rotar_temperatura(){
cron c1;
actualizar_icono(icontem);
actualizar_valor(DeviceInfo.getBatteryTemperature());
c1 = new cron(2,10000);
c1.start();
}
public void rotar_memoria(){
cron c1;
actualizar_icono(iconmemo);
actualizar_valor(34);
c1 = new cron(3,10000);
c1.start();
}
public void rotar_nivel(){
cron c1;
actualizar_icono(iconcarga);
actualizar_valor(DeviceInfo.getBatteryLevel());
c1 = new cron(1,10000);
c1.start();
}
public void iniciar_servicio() {
try {
ApplicationIndicatorRegistry reg =
ApplicationIndicatorRegistry.getInstance();
ApplicationIndicator Indicator =
reg.register(mIcon, false, true);
} catch (Exception e) {
}
}
public void parar_servicio() {
try {
ApplicationIndicatorRegistry reg =
ApplicationIndicatorRegistry.getInstance();
reg.unregister();
} catch (Exception e) {
}
}
void actualizar_valor(int value) {
try {
ApplicationIndicatorRegistry reg =
ApplicationIndicatorRegistry.getInstance();
ApplicationIndicator appIndicator =
reg.getApplicationIndicator();
appIndicator.setValue(value);
} catch (Exception e) {
}
}
void actualizar_icono(ApplicationIcon icon) {
try {
ApplicationIndicatorRegistry reg =
ApplicationIndicatorRegistry.getInstance();
ApplicationIndicator appIndicator =
reg.getApplicationIndicator();
appIndicator.setIcon(icon);
} catch (Exception e) {
}
}
}
class cron extends Thread {
//private ApplicationIcon icono;
public int valor;
private int tiempo;
iconnoti icon = new iconnoti();
public cron(int v, int t){
valor = v;
tiempo = t;
}
public void run() {
try {
sleep(tiempo);
} catch (InterruptedException e) {
}
if(valor == 1){
icon.rotar_temperatura();
}else if(valor == 2){
icon.rotar_memoria();
}else if(valor == 3){
icon.rotar_nivel();
}
}
}
感谢您的帮助。
推荐答案
后台应用程序是一种过程,所以没有GUI,至少在开始。
Background Application is a kind of process, so there is no GUI at least on the beginning.
- 您应该延长,而不是UIApplication类应用
-
您不应该推屏幕出现,刚刚从iconnoti类移动一切与cron类,并在应用程序构造运行它:
- You should extend Application instead of UIApplication class
You should not push screen there, just move everything from iconnoti class to cron class and run it in Application constructor:
public class BerryInfoApp extends Application {
public BerryInfoApp() {
UpdateThread updateThread = new UpdateThread(10*60*1000);
updateThread.run();
}
public static void main(String[] args) {
(new BerryInfoApp()).enterEventDispatcher();
}
}
class UpdateThread extends Thread {
EncodedImage imgtem = EncodedImage
.getEncodedImageResource("icon_bateria_t.png");
ApplicationIcon icontem = new ApplicationIcon(imgtem);
EncodedImage imgcarga = EncodedImage
.getEncodedImageResource("icon_bateria.png");
ApplicationIcon iconcarga = new ApplicationIcon(imgcarga);
EncodedImage imgmemo = EncodedImage
.getEncodedImageResource("icon_memoria.png");
ApplicationIcon iconmemo = new ApplicationIcon(imgmemo);
ApplicationIcon mIcon = icontem;
static final int ACTION_NONE = 0;
static final int ACTION_BATTERY_TEMP = 1;
static final int ACTION_MEMORY = 2;
static final int ACTION_BATTERY_LEVEL = 3;
int mAction = ACTION_BATTERY_LEVEL;
long mPeriod;
public UpdateThread(int period) {
mPeriod = period;
}
public void stop() {
mAction = ACTION_NONE;
}
public void run() {
iniciar_servicio();
while (mAction != ACTION_NONE) {
switch (mAction) {
case ACTION_BATTERY_TEMP:
rotar_temperatura();
mAction = ACTION_MEMORY;
break;
case ACTION_MEMORY:
rotar_memoria();
mAction = ACTION_BATTERY_LEVEL;
break;
case ACTION_BATTERY_LEVEL:
rotar_nivel();
mAction = ACTION_BATTERY_TEMP;
break;
default:
break;
}
try {
sleep(mPeriod);
} catch (InterruptedException e) {
}
}
parar_servicio();
}
public void rotar_temperatura() {
actualizar_icono(icontem);
actualizar_valor(DeviceInfo.getBatteryTemperature());
}
public void rotar_memoria() {
actualizar_icono(iconmemo);
actualizar_valor(34);
}
public void rotar_nivel() {
actualizar_icono(iconcarga);
actualizar_valor(DeviceInfo.getBatteryLevel());
}
public void iniciar_servicio() {
try {
ApplicationIndicatorRegistry reg = ApplicationIndicatorRegistry
.getInstance();
ApplicationIndicator Indicator = reg.register(mIcon, false, true);
} catch (Exception e) {
}
}
public void parar_servicio() {
try {
ApplicationIndicatorRegistry reg = ApplicationIndicatorRegistry
.getInstance();
reg.unregister();
} catch (Exception e) {
}
}
void actualizar_valor(int value) {
try {
ApplicationIndicatorRegistry reg = ApplicationIndicatorRegistry
.getInstance();
ApplicationIndicator appIndicator = reg.getApplicationIndicator();
appIndicator.setValue(value);
} catch (Exception e) {
}
}
void actualizar_icono(ApplicationIcon icon) {
try {
ApplicationIndicatorRegistry reg = ApplicationIndicatorRegistry
.getInstance();
ApplicationIndicator appIndicator = reg.getApplicationIndicator();
appIndicator.setIcon(icon);
} catch (Exception e) {
}
}
}
这篇关于黑莓 - 运行后台应用程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!