2013-03-31 3 views
0

Я разрабатываю довольно большое приложение с несколькими действиями, see link, и у меня есть 2 вопроса о базовом дизайне.Android-приложение оптимального дизайна с несколькими действиями

  1. Что лучшая практика в отношении открытия деятельности, так что, что я не тратить память, имея несколько экземпляров одного и того же класса открытой одновременно и такое?

  2. Приложение должно постоянно получать USB-данные через UART-интерфейс и каким-то образом перенаправлять эти данные на фокус. На данный момент начальная активность получает данные через обработчик. это будет работать, если только для одного действия необходимы данные USB. Как мне это сделать?

Start.java

final Handler handler = new Handler() 
{ 
    @Override 
    public void handleMessage(Message msg) 
    { 
     if(actualNumBytes[0] != 0x00) 
     { 
      info.append(String.copyValueOf(readBuffer, 0, actualNumBytes[0])); 
     } 
    } 
}; 

handler_thread.java

/*usb input data handler*/ 
private class handler_thread extends Thread 
{ 
    Handler mHandler; 

    handler_thread(Handler h){ 
     mHandler = h; 
    } 

    public void run() 
    { 
     while(true) 
     { 
      Message msg = mHandler.obtainMessage(); 
      try{ 
       Thread.sleep(50); 
      } 
      catch(InterruptedException e){} 

      status = uartInterface.ReadData((byte)64, readBuffer, actualNumBytes); 
      mHandler.sendMessage(msg); 
     } 
    } 
} 

ответ

0
  1. Если вы хотите, чтобы свести к минимуму количество видов деятельности, рассмотреть вопрос об использовании фрагментов вместо.

  2. Если у вас есть глобальная переменная/событие/поток, которые нужно обрабатывать с помощью текущей активности, поместите ее в службу и позвольте ей взаимодействовать с ней (подключитесь к запуску/возобновлению, отключите при паузе/остановке).

Надеюсь, это поможет.

+0

Спасибо! Раньше я работал с фрагментами или услугами, но я буду читать в нем! –

+0

Да, и если вам нужна переменная/нить, чтобы жить как можно дольше, даже если пользователь покинул приложение, вы можете настроить службу для запуска на переднем плане (и использовать для этого уведомление). Кроме того, каждый раз, когда вы находите ответ в соответствии с вашими потребностями, и вы думаете, что он ответил на ваш вопрос, вы его пометите (нажмите кнопку «V»), как «ответили». –

+0

Я буду отмечать как ответ, как только я получу его на работу :) Спасибо! –

Смежные вопросы