在整个Android应用程序中维护连接变量

时间:2013-01-21 13:08:44

标签: android android-activity client-server android-service opc-ua

我有三个问题: -

1)我正在为OPCUA服务器创建OPCUA客户端。我的应用程序有多个avtivities,其中大多数需要连接客户端。在我的所有活动中使我的连接客户端可用的最佳方法是什么。我目前使用静态变量来保存我的客户端。但还有其他更好的方法。我的客户端不是Serializable或Parcelable,因此不能作为intent参数传递。

2)我可以在服务中维护这个静态变量,并在MySerivce.connectedClient的所有活动中访问它吗?这会是一个很好的编程实践吗?

3)如果我的应用程序强制关闭并且未释放与我的服务器的连接,该怎么办?即使申请人关闭,我也希望能够与我的服务器断开连接。有没有办法确保这一点(除了将我的所有代码都包含在try catch块中)?

请建议。

2 个答案:

答案 0 :(得分:0)

对我而言,这听起来好像您应该将您的客户端实现为并发的,特定于应用程序(私有)的服务。它将根据Android的要求启动和停止,您的所有活动都可以绑定到它。

http://developer.android.com/guide/components/services.html

答案 1 :(得分:0)

最好将所有应用程序特定的东西保存在Application类中。

http://developer.android.com/reference/android/app/Application.html

例如 -

 public class XYZ extends Application {
 .....

 }

此处也可以使用所有特定于应用程序的初始化。

根据您的要求,静态初始化适合这里。唯一的事情是它可以在Application类而不是Service(很容易被android杀死)中完成。

强制停止应用程序将终止整个过程(即使用Process.killProcess(int pid))。与应用程序关联的所有资源都将被内核删除并释放。所以不,你无法拦截这一行动。

但总是更安全的一面

1)您应该在OnDestory()

中取消注册服务器连接

2)即使更安全,您也可以在Application class

中使用以下功能
public void onLowMemory ()
public void onTerminate ()
public void onTrimMemory (int level)