2012-03-01 119 views
0

我正在处理一个需要连接到服务器的应用程序。我还需要通过不同的活动访问此连接。
为了达到这个目的,我打算重写Application类,并在那里创建连接。这将允许从每个Activity轻松进行交互,因为我只需拨打getApplicationContext().getConnection()即可访问我自己的连接类。释放应用程序中的资源?

这种方法的问题是Application类没有任何onDestroy()方法或类似的我可以释放连接和任何相关资源。我不认为让它闲置直到onLowMemory()被称为是最好的方法。
我无法添加自定义的release()方法,因为我不知道该何时调用它(有两个活动可以是最后一个活动的活动,并且根据用户的操作,他们不知道另一个活动是否是当活动的关闭时启动)。

有没有一个很好的解决方案,我应该忽略释放资源(在onLowMemory()之前)还是有更好的方法来实现我想要的(可能是Service,但由于会有几个调用它的基础类它可能会对服务产生过度问题?)

回答

0

只需使用Singleton设计模式。创建你的Connection类Singleton让你可以从不同的活动中访问连接,并且不会忘记处理多线程。

+0

我曾希望避免使用单身人士,原因有二:首先,我认为代码应该更清洁,并且在应用程序上下文中的连接更有意义,其次,因为我仍然会遇到以单例方式释放资源的问题,但是单例甚至没有“onLowMemory( )'方法。 多线程已经被关注:) – Jave 2012-03-01 15:27:18

+0

“有两个活动可以是最后一个活动,并且取决于用户的操作,他们不知道当另一个活动关闭时是否要启动另一个活动”您可以添加静态计数器来计数活动,并且如果只有一个打开的活动调用release()。 – 2012-03-01 16:04:45

+0

是的,这也是我的想法,可以用应用程序或单例方式完成。我在应用程序中考虑类似引用计数器的情况,并且当不再有任何活动引用时,它会启动一个计时器,并且如果在时间到达后仍没有活动引用,则释放资源。 这个问题有一些很好的讨论单身人士与应用程序:http://stackoverflow.com/questions/3826905/singletons-vs-application-context-in-android – Jave 2012-03-02 09:02:52