public class MainActivity extends AppCompatActivity { TextView test_text; private final MyHandler mHandler = new MyHandler(this); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); test_text = findViewById(R.id.test_text); } /** * 点击一下 去启动一个线程,在子线程中去发一条消息,通知主线程去更新UI * @param view */ public void MyTest(View view) { new MyThread().start();//启动一个线程 } //静态的匿名内部类不会持有外部类的引用 private static class MyHandler extends Handler { private final WeakReference<MainActivity> mActivty; private MyHandler(MainActivity mActivty) { //当前Activity的弱引用 this.mActivty = new WeakReference<MainActivity>(mActivty); } @Override public void handleMessage(@NonNull Message msg) { super.handleMessage(msg);
Activity 中 Handler的正确使用
最新推荐文章于 2021-03-12 23:08:36 发布
本文探讨了在Android的Activity中如何正确使用Handler,以防止内存泄漏。通过创建一个静态内部类的Handler并使用WeakReference持有Activity的引用,确保在Activity结束时能够正确释放资源。此外,文章还介绍了如何在子线程中发送消息到主线程更新UI,以及如何优化Message的获取和使用,以减少性能消耗。
摘要由CSDN通过智能技术生成