我正在开发一个包含多项活动的相当大的应用程序,see link,我对基础设计有两个问题。
关于开放活动的最佳做法是什么,以便我不会因同时打开同一类的多个实例而浪费内存?
应用必须通过UART接口不断接收USB数据,并且应该以某种方式将此数据转发到焦点活动。现在,start活动通过处理程序接收数据。如果只有一个活动需要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 :(得分:0)
如果您希望尽量减少活动数量,请考虑使用片段。
如果您有一个需要由当前活动处理的全局变量/事件/线程,请将其放入服务中,并让活动与之通信(连接启动/恢复,暂停时断开/停止)。
希望这有帮助。