سؤال

كيفية إعداد نقطة إدخال بديلة في تطبيق BlackBerry. سيكون هناك 2 تطبيق

  1. تطبيق واجهة المستخدم
  2. تطبيق الخلفية: سيتم تشغيله على Autostart.

هناك مقالة مركز المعرفة بلاك بيري حول هذا ، والتي جربتها ، وترميز على النحو التالي. ولكن عند النقر على أيقونة التطبيق ، لا يوجد استجابة.

class EntryPointForApplication extends UiApplication {
    public EntryPointForApplication() { 
        GUIApplication scr = new GUIApplication(); 
        pushScreen(scr);         
    } 

    public static void main(String[] args) { 

        if ( args != null && args.length > 0 && args[0].equals("background1") ){
            // Keep this instance around for rendering
            // Notification dialogs.
            BackgroundApplication backApp=new BackgroundApplication();
            backApp.enterEventDispatcher();
            backApp.setupBackgroundApplication();   

       } else {       
        // Start a new app instance for GUI operations.     
         EntryPointForApplication application = new EntryPointForApplication(); 
           application.enterEventDispatcher();         
       }        
    }   
}

تطبيق واجهة المستخدم

class GUIApplication extends MainScreen {   
    public GUIApplication(){        
        add(new LabelField("Hello World"));             
    } 
}

تطبيق الخلفية

class BackgroundApplication extends Application {   
    public BackgroundApplication() {
        // TODO Auto-generated constructor stub
    }
    public void setupBackgroundApplication(){

    }   
}

لقد قمت بتكوين BlackBerry_App_Discriptor.xml وفقًا لهذا (تحرير) ارتباط سيء
هل يمكن لأي شخص أن يساعد ، حيث أخطئ.

هل كانت مفيدة؟

المحلول

حاول تسجيل قيمة ARGS و (إن لم يكن NULL) args [0] لمعرفة ما الذي يتم تمريره بالفعل إلى MAIN (). من المحتمل أن تكون هناك مشكلة في عملية التجميع الخاصة بك حيث لا تمر وحدة الخلفية بوسيطة (أو عدم تمرير القيمة الصحيحة).

وأيضًا ، حاول حفظ مثيل ENTROMPOINTORAPPLACITY في متغير ثابت بحيث يحافظ على مرجع (لم يتم جمع القمامة) بحيث إذا تم النقر على الرمز مرة أخرى من الشاشة الرئيسية أثناء تشغيله بالفعل ، فلن تبدأ مثيلات متعددة من تطبيقك. فمثلا:

class EntryPointForApplication extends UiApplication {

    private static EntryPointForApplication theApp;

    public EntryPointForApplication() { 
        GUIApplication scr = new GUIApplication(); 
        pushScreen(scr);         
    } 

    public static void main(String[] args) { 

        if ( args != null && args.length > 0 && args[0].equals("background1") ){
            // Keep this instance around for rendering
            // Notification dialogs.
            BackgroundApplication backApp=new BackgroundApplication();
            backApp.setupBackgroundApplication();   
            backApp.enterEventDispatcher();
       } else {       
         if (theApp == null) {
             // Start a new app instance for GUI operations.     
             theApp = new EntryPointForApplication();
             theApp.enterEventDispatcher();         
         } 
       }        
    }   
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top