找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 359|回复: 0

常见Android内存泄漏的例子

[复制链接]

70

主题

11

回帖

286

积分

管理员

积分
286
发表于 2025-2-5 20:02:52 | 显示全部楼层 |阅读模式
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);
    }
}

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|软件开发

GMT+8, 2025-8-27 13:28 , Processed in 0.140831 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表