当前位置: 首页 > news >正文

工业设计网站排名网站建设维护相关人员培训

工业设计网站排名,网站建设维护相关人员培训,厦门市建设工程在哪备案网站,网站制作 技术3.17Android优化 手机移动设备的内存是有限的,需要避免内存泄漏,优化内存使用。 1.java中四种引用类型 强引用、软引用、弱引用、虚引用。 强引用:使用类构造方法,创建对象,当内存超出了,也不会释放对象所占内存空间; String str = new String(‘1223’); 切断引用str=…3.17Android优化 手机移动设备的内存是有限的,需要避免内存泄漏,优化内存使用。 1.java中四种引用类型 强引用、软引用、弱引用、虚引用。 强引用:使用类构造方法,创建对象,当内存超出了,也不会释放对象所占内存空间; String str = new String(‘1223’); 切断引用str=null; 软引用:当内存不足时,会释放对象所占内存空间 SoftReferenceString softReference = new SoftReferenceString(str); 切断引用softReference.clear() 弱引用:只要系统产生GC(垃圾回收),会释放对象所占空间 WeakReferenceString weakReference = new WeakReferenceString(str); 切断引用System.gc(),调用垃圾回收 虚引用:判断对象是否已经被释放 PhantomReferenceString phantomReference = new PhantomReferenceString)(str); 2.LeakCanary使用 LeakCanary是一个内存泄漏检查的开源项目。 网址:https://square.github.io/leakcanary/ 1.添加LeakCanary到build.gradle 找到build.gradle(Module:app)文件添加: dependencies { // debugImplementation because LeakCanary should only run in debug builds. debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.2' } 执行程序,设置过滤器Log tag:LeakCanary,可以看到: 2.常见内存泄漏类型 内存泄漏:在java运行过程中,内存泄漏是一种编程错误,使得应用程序保留不再需要的对象的引用。结果,无法回收该对象分配的内存,最终导致OutOfMemoryError。例如:一个Activity在调用其onDestroy方法后,就不再使用。但是在静态字段中保存对Activity的引用,阻碍了GC对内存的垃圾回收。 大多数内存泄漏是由与对象生命周期相关的错误引起的。 以下是一些常见的Android错误: Fragment的onDestroyView方法中没有清除不再使用的View; Activity的Context储存为对象的字段,由于配置原因不能重新创建该对象; 注册监听器、广播、RxJava订阅后,在其生命周期结束后忘记取消注册; 内部类导致内存泄漏 内部类示例会隐式持有外部类引用。内部类执行线程耗时操作时,外部类Activity关闭,内部类会继续持有外部类引用,调用外部类方法,但是Activity已经无用,应该回收,这样会引起内存泄漏。 示例: 创建内部类MyThread,执行一个耗时操作,Activity点击按钮触发耗时操作,在执行过程中将退出Activity,导致内存泄漏。 public class MainActivity extends AppCompatActivity {private Button button1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);button1=findViewById(R.id.btn1);button1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {startTask();}});}//执行耗时操作public void startTask(){MyThread myThread=new MyThread();myThread.start();}private class MyThread extends Thread{@Overridepublic void run() {for(int i=0;i100;i++){//耗时操作SystemClock.sleep(1000);}}} } 在通知栏可以看到LeakCanary弹出通知信息,点击可以查看详细信息。 在AndroidStudio的Logcat中也可以看到类似详细信息。 处理内部类内存泄漏:将内部类改为静态内部类,这样内部类将不再隐式持有外部类的引用,当然内部类也不能访问外部类非静态字段、方法。内部类可以通过弱引用来使用外部类非静态字段、方法,这样当GC时,不会出现内存泄漏。 示例: public class MainActivity extends AppCompatActivity {private Button button1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);button1=findViewById(R.id.btn1);button1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {startTask();}});}//执行耗时操作public void startTask(){MyThread myThread=new MyThread(MainActivity.this);myThread.start();}//修改为静态内部类,不再隐式持有外部类引用private static class MyThread extends Thread{//通过弱引用获取Activity中非静态字段、方法WeakReferenceMainActivity weakReference=null;public MyThread(MainActivity mainActivity){weakReference=new WeakReferenceMainActivity(mainActivity);}//获取外部类对象public void getOutObj(){//获取外部类对象MainActivity mainActivity=weakReference.get();//获取成功,通过外部类对象获取属性、方法if (mainActivity!=null){}}@Overridepublic void run() {for(int i=0;i100;i++){//耗时操作SystemClock.sleep(1000);}}} } 内部类Handler导致内存泄漏 示例:在MainActivity中创建内部类Handler,创建startMessage方法,执行延迟发送message操作,当退出Activity时,也会出现内部类的内存泄漏。解决办法也是将内部类修改为静态或者创建对应的MyHandle
http://www.zqtcl.cn/news/484015/

相关文章:

  • 温州做网站的公司有哪些宝塔搭建wordpress主机地址
  • 重庆商务网站建设南昌新力中心 nanchang sinic center
  • 潍坊建设厅官方网站店铺网络营销策划方案
  • 东营聊城网站建设博客论坛用wordpress
  • 哈尔滨中国建设银行网站首页seo快速入门教程
  • 网站建设项目环境影响评价目录南宁网站建设索王道下拉
  • 广州富邦物流网站建设南宁住房和城乡建设部网站
  • asp.net 公司网站全面的移动网站建设
  • 中国空间站官网app下载平台有哪些
  • 做外贸网站报价单做网站需要什么证件吗
  • 网站可以做视频链接东红物流网站建设规划书
  • 自己的网站网站免费部署
  • 广州专业的网站建设公司镇海seo关键词优化费用
  • 网站建设英文字体格式网络技术培训内容
  • 郑州公司网站设计在西宁做网站可以吗
  • 做最好的言情网站南通优普营销网站建设
  • 毕业设计网站可以做什么辽宁省建设厅网站更新
  • 同城信息网站建设牡丹江网站推广
  • 四川省城乡住房建设部网站首页商丘网站制作公司一二三网络推广
  • asp网站开发全程视频免费发布招聘信息平台
  • 机械网站建设开发网站如何做收录排行
  • 成都市学校网站建设怎样做网站二维码
  • 网站建设企业电话在线照片处理编辑器
  • 长沙建设网站企业wordpress 亲子模板下载
  • 济南seo整站优化价格织梦网站做404页面
  • 石家庄做标书的网站如何选取网站关键词
  • 摄影作品网站推荐wordpress用插件注册
  • pc端兼手机端网站模板中国网站 服务器
  • 江宁区建设工程局网站做网站满屏的照片尺寸是多少
  • 中国设计师网站网站开发需要什么专业的人才