2013-03-31 60 views
0

我正在開發一個相當大的應用程序,其中有幾項活動,see link,我有兩個關於基本設計的問題。Android應用程序優化設計,包含多項活動

  1. 什麼是關於最佳實踐開幕活動,讓我不要有相同的類在同一時間,這種開放的多個實例浪費內存?

  2. 該應用程序必須通過UART接口不斷地接收USB數據,並且應該以某種方式將該數據轉發給焦點活動。現在開始活動通過處理程序接收數據。如果只有一個活動需要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

我會盡快將它標記爲答案:)謝謝! –