黑莓 - 运行后台应用程序 [英] Blackberry - Running Background Application

查看:211
本文介绍了黑莓 - 运行后台应用程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

下午好。
我开始在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆