【发布时间】:2016-12-08 06:26:11
【问题描述】:
我在activity class 中使用以下代码:
public static Activity list_Addresses_Activity;
在我的onCreate 中,我使用了这个:
list_Addresses_Activity = this;
但它会引发如下错误:
Do not place Android context classes in static fields; this is a memory leak (and also breaks Instant Run)
我需要从static 使用它,因为我将在我的Service class 中使用它。
我的CloseActivies.class:
public class CloseActivies {
Activity a;
Activity b;
Activity c;
protected void CLSActivities(Activity ListAddresses, Activity ListOrder, Activity SendReports) {
a = ListAddresses;
b = ListOrder;
c = SendReports;
if (ListAddressesActivity.FlagLiveAddress && a != null) {
Log.e("ADASFSDAGWEG", "X");
a.finish();
ListAddressesActivity.FlagLiveAddress = false;
}
if (ListOrderActivity.FlagLiveOrder && b != null) {
Log.e("ADASFSDAGWEG", "Y");
b.finish();
ListOrderActivity.FlagLiveOrder = false;
}
if (SendReportsActivity.FlagSendReport && c != null) {
Log.e("ADASFSDAGWEG", "Z");
c.finish();
SendReportsActivity.FlagSendReport = false;
}
}
protected void CLSActivities() {
if (ListAddressesActivity.FlagLiveAddress && a != null) {
Log.e("ADASFSDAGWEG", "X");
a.finish();
ListAddressesActivity.FlagLiveAddress = false;
}
if (ListOrderActivity.FlagLiveOrder && b != null) {
Log.e("ADASFSDAGWEG", "Y");
b.finish();
ListOrderActivity.FlagLiveOrder = false;
}
if (SendReportsActivity.FlagSendReport && c != null) {
Log.e("ADASFSDAGWEG", "Z");
c.finish();
SendReportsActivity.FlagSendReport = false;
}
}
}
【问题讨论】:
-
因为静态变量存在于类区域而不是特定对象中。因此,即使对象被释放,静态变量也会占用内存空间
-
您能否提供更多信息来说明为什么您的服务类中需要活动实例?
-
@Abhishek V 。我的代码很大。对不起。
-
@AbhishekV :我认为 Jo 想从服务中访问 Activity 的一些变量。
-
我需要完成已打开的活动。我编辑了我的问题。
标签: android memory-leaks android-memory java-memory-leaks