我正在编写同时具有“活动”和“服务”组件的Android应用程序。此外,我有一个封装了一个资源的类,我在活动和服务的几个地方共享资源。我的问题是我如何确定何时释放资源。据我了解,Java没有析构函数的概念,所以我不能只在共享对象中创建一个析构函数,当没有更多的对象引用时将会调用它。 Android具有诸如Activity的onPause和Service的onDestroy之类的功能,尽管技术上不能保证在所有可能的关闭情况下(例如低内存杀手都不会调用这些函数)这些函数都会被调用。在任何情况下,活动都可能被销毁而不会破坏服务,在这种情况下,仍然可能会引用该资源,所以我不能在这种情况下盲目释放资源。由于Java没有析构函数,因此有些源表示创建自己的“close()”类型函数并手动调用它。但似乎这样工作,我将不得不维护自己的引用计数方案,考虑到Java已经具有GC而不需要这种方案,这似乎相当奇怪。释放Android应用程序中的共享资源
这里有什么合适的解决方案?
你的问题描述不清楚。请更详细地描述共享资源的含义。是内存还是持久对象?什么是服务器组件?它是在设备上运行的东西吗?或在远程位置的东西? – minhaz
对不起,我的意思是在android.app.Service中的服务。共享资源是一个抽象,由各个类共享一个实例(通过持有相同的引用)和(Java)同步以阻止并发访问的类表示。 – Michael
听起来像你来自C的世界。不需要这些类型的Java释放内存。当没有对象的引用时,我们有一个垃圾收集器为我们这样做。 – cYrixmorten