我想在Android應用程序中使用ZMQ。理想情況下,我應該在應用程序關閉時創建一次和定義上下文()。如何在Android應用程序中創建ZMQ上下文
但不同的是C++應用程序。 android上沒有main()函數。基於有關activity life cycle的Google文檔。函數onCreate(),onStop()可以被多次調用,函數onDestroy()只能被系統調用。
解決方法1:創建/銷燬ZMQ上下文中一個的AsyncTask()。但那樣會非常昂貴。
溶液2:基於線程Android global variable上,我可以創建一個全局變量ZMQ.Context context
。這種方法的問題是:沒有適當的功能調用context.term();
。
solution3。創建一個單獨的類
import org.zeromq.ZMQ;
public class ZmqHelper {
private static ZMQ.Context _context;
public static ZMQ.Context createContext(){
return getContext();
}
public static ZMQ.Context getContext(){
if(_context == null) {
_context = ZMQ.context(1);
}
return _context;
}
private ZmqHelper(){
}
public static boolean release(){
// make sure all sockets are closed
if(_context != null) {
_context.term();
_context = null;
return true;
}
return false;
}
}
單身的問題是一樣的解決方案2.我必須手動調用ZmqHelper.release() //which calls context.term()
在某個階段。我不確定在哪裏調用函數term()來銷燬zmq上下文。
那麼,什麼是創建/終止在Android應用程序中的ZMQ上下文正確的方法是什麼?
ENV:
的Ubuntu:16.04 LTS
Android的工作室:2.3.3
ZMQ:org.zeromq:jeromq:0.4.0