我有一个 ChatBox 的 ArrayList,它是一个扩展活动的类。
我的问题是,如果系统杀死了我的 ChatBox 活动的一个实例,如果我使用对 ChatBox 类的引用来尝试使用通过处理程序发送的文本更新 ui,会发生什么?
我有一个 ChatBox 的 ArrayList,它是一个扩展活动的类。
我的问题是,如果系统杀死了我的 ChatBox 活动的一个实例,如果我使用对 ChatBox 类的引用来尝试使用通过处理程序发送的文本更新 ui,会发生什么?
..除了例外,您将泄漏整个活动。任何存储Context
(例如)超出活动生命周期的对象都将导致它不被 GC'ed Views
。Bitmaps
我想您的应用程序的性质是非常异步的,您无法判断活动何时停止。在这种情况下,请查看 aWeakReference
作为存储对您的活动的引用的一种方式。这样,如果 android 决定停止它,它将成功解除分配它,并且您将能够在搞砸之前判断 Activity 是否在您的聊天框中:
WeakReference<Activity> myWeakActivity=new WeakReference(realActivity);
.
.
Activity myActivity=myWeakActivity.get();
if (myActivity==null) {
// Activity not active for whatever reason.
}
您可以尝试在纵向和横向之间多次更改(这会重新启动活动)。仔细查看您的堆大小。如果您泄漏视图,您会看到它不断增长和增长,直到最终死亡。
你会得到 DeadObjectException...