|
static导致的内存泄漏[color=var(--hltools-color)][size=1.15em]JAVA
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| public class MainActivity extends AppCompatActivity {
private static Bitmap sBitmap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 假设这是一个很大的Bitmap对象,可能由于资源管理不当导致泄露
sBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.large_image);
}
// 假设这是一个可能导致泄露的方法
public void leakMemory() {
// 这里的内存泄露是因为静态变量持有Activity的引用
sBitmap = ((BitmapDrawable) getDrawable(R.drawable.large_image)).getBitmap();
}
}
| handler导致的内存泄漏[color=var(--hltools-color)][size=1.15em]JAVA
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| import android.os.Handler;
import android.os.Message;
public class SampleActivity extends Activity {
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
// 处理消息
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Activity 的创建逻辑...
// 发送一个消息,将在未来某个时刻处理
mHandler.sendMessageDelayed(Message.obtain(), 1000);
}
@Override
protected void onDestroy() {
super.onDestroy();
// 如果 Activity 销毁,取消所有未处理的消息
mHandler.removeCallbacksAndMessages(null);
}
} |
|
|