0

我有三个问题:-

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

2) 我可以在服务中维护这个静态变量并使用 MySerivce.connectedClient 在我的所有活动中访问相同的变量吗?那会是好的编程习惯吗?

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

请建议。

4

2 回答 2

0

对我来说,这听起来好像您应该将您的客户端实现为一个并发的、特定于应用程序的(私有)服务。它将由 Android 按需启动和停止,并且您的所有活动都可以绑定到它。

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

于 2013-01-21T13:17:05.190 回答
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 类中使用以下功能

public void onLowMemory ()
public void onTerminate ()
public void onTrimMemory (int level)
于 2013-01-21T13:37:17.257 回答