下面是使用弱引用和软引用的示例代码:
1.弱引用(WeakReference)示例代码:
import java.lang.ref.WeakReference;
public class MyActivity extends AppCompatActivity {
private WeakReference<SomeObject> weakRef;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 创建弱引用对象
SomeObject obj = new SomeObject();
weakRef = new WeakReference<>(obj);
// 使用弱引用对象进行操作
SomeObject refObj = weakRef.get();
if (refObj != null) {
// 对 refObj 进行操作
} else {
// refObj 已经被回收
}
}
@Override
protected void onDestroy() {
super.onDestroy();
// 清除对弱引用对象的引用
weakRef.clear();
}
}
在上述代码中,我们创建了一个 SomeObject 类的实例,并使用 WeakReference 来持有该对象的弱引用。在需要使用对象时,通过 weakRef.get() 方法获取弱引用对象的引用,如果对象未被回收,则可以进行相应操作。在 onDestroy() 方法中,使用 clear() 方法清除对弱引用对象的引用。
2.软引用(SoftReference)示例代码:
import java.lang.ref.SoftReference;
public class MyActivity extends AppCompatActivity {
private SoftReference<SomeObject> softRef;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 创建软引用对象
SomeObject obj = new SomeObject();
softRef = new SoftReference<>(obj);
// 使用软引用对象进行操作
SomeObject refObj = softRef.get();
if (refObj != null) {
// 对 refObj 进行操作
} else {
// refObj 已经被回收
}
}
@Override
protected void onDestroy() {
super.onDestroy();
// 清除对软引用对象的引用
softRef.clear();
}
}
在上述代码中,我们同样创建了一个 SomeObject 类的实例,并使用 SoftReference 来持有该对象的软引用。使用方式与弱引用类似,在需要使用对象时,通过 softRef.get() 方法获取软引用对象的引用,并进行相应操作。在 onDestroy() 方法中,使用 clear() 方法清除对软引用对象的引用。
值得注意的是,由于软引用是在内存不足时才会被自动回收,所以在实际使用中需要谨慎判断软引用对象是否为 null,以避免出现空指针异常。