相关疑难解决方法(0)

793
推荐指数
17
解决办法
30万
查看次数

Android中的静态单例生存期

我有一些不清楚的情况:

在最后一次参考持有活动被破坏后,静态单例是否会被垃圾收集?因为Application中没有对单例实例的引用.那么我可以依靠单身人士吗?

通过官方Android文档:

通常不需要子类Application.在大多数情况下,静态单例可以以更模块化的方式提供相同的功能.

通过一些帖子:

https://web.archive.org/web/20160729201921/http://www.devahead.com/blog/2011/06/extending-the-android-application-class-and-dealing-with-singleton/

在开发应用程序时,我发现有时一些绑定到活动的静态变量恰好是未初始化的,即使它们之前已被初始化!我认为当一个静态变量被初始化时,它在应用程序的整个生命周期中都是如此,但事实并非如此.

换句话说,如果没有任何东西对我的静态单例类进行引用,那么是什么阻止它被垃圾收集和销毁?

singleton android

27
推荐指数
2
解决办法
2万
查看次数

Android:系统什么时候卸载类?

这是一个非常奇怪的问题.我的应用程序运行得很好,但不知怎的,如果我在我的应用程序运行时将手机放置一两个小时,当我稍后再回来时会出现以下错误:

java.lang.NoClassDefFoundError: yoga.database.Manager
at
yoga.YogaActivity.openDatabase(YogaActivity.java:294)
at
yoga.YogaActivity.initData(YogaActivity.java:275)
at
yoga.YogaActivity.onCreate(YogaActivity.java:102)
at
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417)
at android.app.ActivityThread.access$2100(ActivityThread.java:116)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4203)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)

我知道我的yoga.database.Manager类是在应用程序启动时加载的,但不知何故,当我离开手机时系统必须卸载该类.

Android会在特定时段后自动卸载类吗?我的课程卸载后我该怎么办?

上面的错误导致我的应用程序崩溃,但我可以很容易地重新启动它,它运行得很好.

问题主要发生在运行Android 1.6的HTC Magic手机上.

java android class noclassdeffounderror

7
推荐指数
1
解决办法
2842
查看次数