gpt4 book ai didi

黑莓 - 运行后台应用程序

转载 作者:行者123 更新时间:2023-12-04 06:53:42 27 4
gpt4 key购买 nike

下午好。
我开始用 java 和 blackberry 编程。
我正在开发一个带有三个窗口的应用程序,我将显示有关设备的基本信息,这些窗口已经完成并可以工作。
我需要创建一个在后台运行的进程,这个进程将每 10 分钟运行一次。
当我让这个过程在后台运行并且正在关闭窗口时?

这是运行应用程序的类型:

    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);
}
}

这是您需要在后台运行的类。
因为我必须调用这个类才能在后台运行?
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。

  • 您应该扩展 Application 而不是 UIApplication 类
  • 您不应该将屏幕推到那里,只需将所有内容从 iconnoti 类移动到 cron 类并在 Application 构造函数中运行它:
    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) {
    }
    }
    }
  • 关于黑莓 - 运行后台应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2768171/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com