码迷,mamicode.com
首页 > 移动开发 > 详细

Android UI中英文自动显示问题

时间:2019-02-19 13:23:39      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:就是   代码   art   http   www   做了   cat   内存泄露   通过   

最近做了一个项目,其中有个视频和图片需要添加各种水印(日期,地点,经纬度,用户ID,产品ID等)问题,而且水印还要支持中英文自动切换显示。功能设计和实现算是比较顺利。昨天测试部给了一个小Bug,那就是在英文环境下,视频预览界面水印能正常显示英文,但通过拍照所获得的图片上的水印却显示为中文!而添加水印这一块代码是完全一样的啊?问题出在哪呢?

经过反复测试,没有发现代码有明显问题。于是凭直觉,就想难道是context上下文不同有关?于是检查代码发现context确实不同,在Activity View下的Context下,水印英文是可以自动切换过去的,而在Application的Context下水印只能显示中文!那么这两个context究竟有何不同呢?

这是两种不同的context:
1.  Application context的生命周期与Application的生命周期相关的,context随着Application的销毁而销毁,伴随application的一生,与activity的生命周期无关.
2. Activity中的context跟Activity的生命周期是相关的,但是对一个Application来说,Activity可以销毁几次,那么属于Activity的context就会销毁多次.
3. 可以通过Activity的context获得Application context,可以通过Context.getApplicationContext 或者 Activity.getApplication方法获取。
 
引起内存泄漏的常见场景:
1.  错误的单例模式
2. View持有Activity引用

注意事项:使用context的时候,小心内存泄露,防止内存泄露!
1. 不要让生命周期长的对象引用activity context,即保证引用activity的对象要与activity本身生命周期是一样的 ;
2. 对于生命周期长的对象,可以使用application context;
3. 避免非静态的内部类,尽量使用静态类,避免生命周期问题,注意内部类对外部对象引用导致的生命周期变化。

详细参见:
【简书】https://www.jianshu.com/p/4f97baa0e8f7
【简书】https://www.jianshu.com/p/94e0f9ab3f1d //Context作用域以及引起内存泄漏的场景
【csdn】https://blog.csdn.net/u014639129/article/details/52741497
 
 

 

Android UI中英文自动显示问题

标签:就是   代码   art   http   www   做了   cat   内存泄露   通过   

原文地址:https://www.cnblogs.com/wangqiang9/p/10400257.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!