内存泄漏及解决方法
来源:互联网 发布:老徐外设店淘宝 编辑:程序博客网 时间:2024/04/27 19:52
在Activity销毁的时候取消正在运行的AsyncTask
public class MainActivity extends Activity { private AsyncTask mAsyncTask; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mAsyncTask = new AsyncTask() { @Override protected Object doInBackground(Object[] objects) { while (true){ if(isCancelled()){ break; } } return null; } }; mAsyncTask.execute(); } @Override protected void onDestroy() { super.onDestroy(); if(null != mAsyncTask && !mAsyncTask.isCancelled()){ mAsyncTask.cancel(true); } mAsyncTask = null; }}
Handler
public class MainActivity extends Activity { private Handler mHandler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mHandler = new MyHandler(new WeakReference<Activity>(this)); mHandler.sendEmptyMessageDelayed(0,1000); } public static class MyHandler extends Handler{ private WeakReference<Activity> mActivity; public MyHandler(WeakReference<Activity> activityWeakReference){ mActivity = activityWeakReference; } @Override public void handleMessage(Message msg) { super.handleMessage(msg); if(null != mActivity){ Activity activity = mActivity.get(); if(null != activity && !activity.isFinishing()){ //TODO do something... } } } }}public class MainActivity extends Activity { private Handler mHandler = new Handler(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mHandler.postDelayed(new Runnable() { @Override public void run() { } },1000); } @Override protected void onDestroy() { super.onDestroy(); mHandler.removeCallbacksAndMessages(null); }}
Thread
public class MainActivity extends Activity { private Thread mThread; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mThread = new Thread(){ @Override public void run() { super.run(); while (true){ } } }; mThread.start(); }}@Override protected void onDestroy() { super.onDestroy(); if(null != mThread){ mThread.interrupt(); } }
阅读全文
0 0
- 内存泄漏及解决方法
- 内存泄漏及常见解决方法
- C++内存泄漏及解决方法
- java内存泄漏原因、判定及解决方法
- java内存泄漏原因、判定及解决方法
- java内存泄漏原因分析及解决方法
- 内存泄漏常见情况及解决方法
- Android内存泄漏问题及解决方法
- Android内存泄漏原因及解决方法
- Android常见内存泄漏及解决方法
- Android内存泄漏场景及解决方法
- log4cpp 内存泄漏 解决方法
- 内存泄漏 解决方法
- WebView内存泄漏解决方法
- WebView内存泄漏解决方法
- WebView内存泄漏--解决方法
- 浅析Handler引起的内存泄漏及解决方法
- 内存泄漏的检测、几种常见场景及解决方法
- 自定义toast
- Linux 特殊权限
- [点分树] Codechef December Challenge 2017. Chef, Leonardo And Queries
- Linux下安装Maven和配置环境变量
- java连接linux
- 内存泄漏及解决方法
- HP总裁退休齐纳的忠告 有点长,但是我坚持一口气读完了
- 移动控件位置和多次点击事件的源码实现
- 数据持久化
- 半透明acticity
- 欢迎使用CSDN-markdown编辑器
- 论文阅读-文本匹配(二) 孪生char-BLSTM
- qtcling
- 【tensorflow学习】最简单的GAN 实现