2016-9-5

2016-9-5

1.Android内存溢出的几种情况

Android中的内存溢出基本发生在以下三种情况:
    1.成员或全局静态对象或单例对象对activity的强引用
    2.不在activity生命周期内的线程对activity的强引用
    3.activity中生命周期不可控的内部类或匿名类对activity的隐式引用
  在activity中引用着大量的view和其他资源,如果在ondestory()后没能把activity回收,则会造成内存溢出
以下是几种场景:
    1. activity内的静态成员对象引用运行状态的activity(如把activity以参数的形式传给静态成员对象,并且在此对象中对其持续引用), 静态对象会在内存中一直保持加载状态,这个对象持有了对activity的引用,就不会被GC回收, 如果在activity生命周期结束时没有清除引用则会引起activity泄漏
    2. 在单例模式的类中不能持有activity的context,即不能把activity传给单例类来构造对象
    2. activity中的view被实例成静态的, 在activity中的view会持有对它的context的引用, 如果必须使用静态view要确保activity完成前把View从视图层级中分离出去
    3. 在activity中的内部类的静态变量引用了activity的context, 这时可以使用WeakReference包裹,在使用时先判空再使用
    4. 匿名类持有包含它的类的引用, 如在activity中匿名地声明并且实例化一个AsyncTask, 在activity销毁后它仍在后台工作的话, 对activity的引用会持续到后台工作完成才进行GC
    5. 注意在activity中创建(非静态)内部类或匿名类, 都会对包含它的类有隐式的应用,不要在activity中创建生命周期不可控的内部类或匿名类如(AsyncTask) 
    5. Handler的后台任务, 定义的Runnable对象被Handler加入了执行队列,Runnable会引用定义它的activity并持有到Handler的消息队列中,只要在activity销毁前消息还没被处理,activity就会被保留在内存中,要注意在activity销毁时从Hanlder移除Runnable对象
    6. Thread或TimerTask持有activity的引用, 在activity销毁时注意移除
    7. 在单例类中持有activity的context
在activity中初始化对象时,要留心潜在的引用, 对activity的引用要是WeakReference, 并及时观测程序运行时内存的释放情况
在需要传入Context的时候尽量考虑使用Application的Context,而不是Activity的
在Activity中尽量避免使用生命周期不受控制的非静态类型的内部类(如匿名类),可以使用静态类型的内部类加上弱引用的方式实现

2.HandlerThread使用

1.创建并启动 mHandlerThread = new HandlerThread("HandlerThread");
    mhandlerThread.start();
2.使用HanlderThread中的Looper创建Hanlder
    Handler handler = new Handler(mHandlerThread.getLooper()){
            @Override
            public void handleMessage(Message msg) {// 非UI线程

            }
        };
3.在任意线程发送消息
4.onDestory()中退出 
    mHandlerThread.quit();
    或mHandlerThread.quitSafely();//是针对在消息队列中还有消息或者是延迟发送的消息没有处理的情况,调用这个方法后都会被停止掉
HandlerThread继承Thread其内部维护了一个Looper,使用HandlerThread不用手动去调用Looper.prepare()和Looper.loop()等方法,Handler依赖Looper来维护发出的消息,在一个线程中创建Handler必须为其指定Looper,在UI线程Android已创建好了Looper,使用Context.getMainLooper();可以获得

3.android5.0按钮水波纹(ripple)效果使用

<?xml version="1.0" encoding="utf-8"?>  
<ripple xmlns:android="http://schemas.android.com/apk/res/android"  
    android:color="#FFEEEEEE">  

    <item android:id="@id/mask" android:drawable="@color/white" />  

</ripple> 
ripple相当于layer-list层叠效果,ripple元素的color属性即指定了波纹效果的颜色,但必须是8位颜色代码值,前两位指定了波纹的透明度,后六位即波纹颜色,以黑色000000及白色FFFFFF效果最为明显
<item android:id="@id/mask" android:drawable="@color/white" />即指定了按钮的正常状态的显示效果
必须在5.0以上有效果, 可以新建drawable-v21文件夹, 在drawable和drawable-v21放两套同名的文件,drawable-v21为5.0以上使用, drawable为5.0以下使用
### 回答1: soilworks2016-sp5完整集成板版的安装教程如下: 准备工作: 1. 检查系统要求:确保计算机满足soilworks2016-sp5的最低配置要求。 2. 下载安装文件:从官方网站下载soilworks2016-sp5完整集成板版的安装文件。 安装步骤: 1. 解压安装文件:将下载的安装文件解压到一个目录中。 2. 打开安装程序:找到解压后的文件目录,双击运行安装程序。 3. 选择安装语言:根据自己的需求选择合适的安装语言。 4. 安装程序准备:安装程序会进行一些准备工作,等待完成。 5. 接受许可协议:阅读许可协议,并接受其中的条款。 6. 选择安装类型:根据需要选择完整安装或者自定义安装。 7. 选择安装位置:选择安装soilworks2016-sp5的目标文件夹。 8. 选择许可类型:选择合适的许可类型,如独立许可或者网络许可。 9. 安装:点击“安装”按钮,开始安装soilworks2016-sp5。 10. 完成安装:等待安装程序完成,点击“完成”按钮退出安装程序。 额外配置: 1. 激活许可:根据许可类型,进行许可的激活,以确保软件的正常运行。 2. 更新补丁:安装完soilworks2016-sp5后,可以进入官方网站,下载并安装任何可用的更新补丁,以确保软件的最新版本和功能。 3. 配置网络许可:如果选择了网络许可,还需要配置服务器和客户端的网络设置,以便让多台计算机共享许可。 以上是soilworks2016-sp5完整集成板版的安装教程。希望对您有帮助! ### 回答2: soilworks2016软件是一款用于土力学分析和地基工程设计的软件。为了使用该软件,首先需要进行安装。下面是soilworks2016-sp5完整集成板版的安装教程。 1. 下载所需软件:首先,在官方网站或其他可靠下载源处下载soilworks2016-sp5的安装文件。确保文件版本正确,并且与您的操作系统兼容。 2. 解压安装文件:将下载的文件解压到您希望安装soilworks2016-sp5的文件夹中。 3. 开始安装:找到解压后的文件夹,并运行"Setup.exe"文件。如果系统提示您提供管理员权限,请点击"是"以继续安装。 4. 选择安装目录:在安装向导的第一个步骤中,您需要选择soilworks2016-sp5的安装目录。您可以选择默认目录或选择其他位置。点击"下一步"继续。 5. 接受许可协议:在下一个步骤中,您需要仔细阅读许可协议,并勾选"我接受许可协议"选项。点击"下一步"继续。 6. 选择组件:在这一步中,您可以选择要安装的组件。默认情况下,所有组件都会被选中。如果您只需要安装特定的组件,可以取消勾选不需要的选项。点击"下一步"继续。 7. 选择安装类型:在这一步中,您可以选择两种安装类型,即typical和custom。如果您只需要常规安装,您可以选择typical;如果您需要自定义安装,您可以选择custom。点击"下一步"继续。 8. 开始安装:在这一步中,系统会显示您所做的选择的摘要。检查摘要并点击"安装"开始安装过程。 9. 等待安装完成:安装过程可能需要一些时间,请耐心等待安装完成。 10. 完成安装:安装完成后,系统会显示"安装完成"的消息。点击"完成"退出安装向导。 11. 启动soilworks2016-sp5软件:在您选择的安装目录中,找到安装文件夹,并运行soilworks2016-sp5软件。输入您的许可密钥并按照软件界面的指导进行操作。 以上是soilworks2016-sp5完整集成板版的安装教程。希望对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值