如何在android应用程序中创建ZMQ上下文
我试图在android应用程序中使用ZMQ。理想情况下,我应该创建一次上下文,并在应用程序关闭时将其命名为term()如何在android应用程序中创建ZMQ上下文,android,zeromq,jeromq,Android,Zeromq,Jeromq,我试图在android应用程序中使用ZMQ。理想情况下,我应该创建一次上下文,并在应用程序关闭时将其命名为term() 但不同于C++应用程序。android上没有main()函数。基于谷歌的文档关于。函数onCreate(),onStop()可以多次调用,函数onDestroy()只能由系统调用 解决方案1:在asyncTask()中创建/销毁ZMQ上下文。但那将是非常昂贵的 解决方案2:基于线程,我可以创建一个全局ZMQ.Context变量。这个方法的问题是:没有合适的函数来调用contex
但不同于C++应用程序。android上没有main()函数。基于谷歌的文档关于。函数onCreate(),onStop()可以多次调用,函数onDestroy()只能由系统调用
解决方案1:在asyncTask()中创建/销毁ZMQ上下文。但那将是非常昂贵的 解决方案2:基于线程,我可以创建一个全局ZMQ.Context
变量。这个方法的问题是:没有合适的函数来调用context.term()代码>
解决方案3。创建单例类
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()//它调用context.term()
。我不确定在哪里调用函数term()来破坏zmq上下文
那么,在android应用程序中创建/终止ZMQ上下文的正确方法是什么
环境:
Ubuntu:16.04 LTS
安卓工作室:2.3.3
ZMQ:org.zeromq:jeromq:0.4.0我认为您应该使用单音实例作为更直接的解决方案
Android上的所有网络通信都必须是一个单独的线程(而不是UI线程)。因此,当您中断网络线程时,可以使用术语ZMQ.Context。如果你的应用程序不需要后台网络连接(你只在单独的活动中执行netwroking),出于性能原因,最好在这些活动的onPause()方法中使用ZMQ.Context
我正在使用这种方法,但在终止子套接字时遇到问题。虽然我认为这个方法很好