熟悉Android开发不得不知道的技巧


博客出自:http://blog.csdn.net/liuxian13183,转载注明出处! All Rights Reserved !


1、用Eclipse插件将文件批量编码如GBK-UTF-8

  

用Eclipse插件将文件批量编码互转

step1.将插件com.lifesting.tool.encoding_1.0.0.jar拷贝到eclipse/plugins目录下,重启Eclipse。

step2. 选择某个项目,右键选择properties,然后点击Convert Setting进行转码规则设置,如下图:


(图1 项目转码规则设置)
这个表格有四列,分别是文件后缀、文件目前编码、转换后的编码、是否转换文件内容,如果转换文件内容,那么对应的是前面所说的第二种情况,不转换文件内容对应的是第一种情况。比如图1的转码规则就是对项目的jsp文件,不管原来是什么编码,统一转为UTF-8编码,并且同时转换文件内容。可以点击右边的Add /Remove按钮来增加/删除规则。最后点击Apply来保存设置。

step3. 转码
在设置了转码规则的项目上,右键选择项目,某几个文件夹或某几个文件(当然一个也可以),然后点击Lifesting Tools->Set Encoding。插件将完成转码工作。如果我们选择的是项目,将转换整个项目;如果选择的是文件夹,转换文件夹下所有满足规则的文件;如果选择的是文件,只转换文件。如下图2


(图2 转码)
除了这方式外,我们还可以利用Eclipse的文件搜索功能,将搜到的文件进行转码,如下图3:


(图3 在searchview里转码)
如上图所示,我们搜到了整个workspace的jsp文件,然后点击绿色E小图标,插件将会把所有满足结果的文件转码,每个文件的转换规则依赖它所属项目的转码规则设置。


JAR包下载 链接:http://download.csdn.net/detail/liuxian13183/7585301 


注:如果批量转码的话,可能需要点时间,部分转码尚存在问题。。。。。。。

 


2、Android Apk反编译工具 链接:http://download.csdn.net/detail/liuxian13183/6580429


3、如何在项目中看源码

右击项目-Properties-Resource-Linked Resources-Path Variables-New-出现下图

Name随便,Location填入你所下载SDK的source文件夹。注意一定要先下好源码,才能链接上!怎么下载,看第6点

4、

像素密度在120左右的屏幕归为ldpi,160左右的归为mdpi,以此类推。这样,所有的Android屏幕都找到了自己的位置,并赋予了相应的倍率:

  ●ldpi [0.75倍]

  ●mdpi [1倍]

  ●hdpi [1.5倍]

  ●xhdpi [2倍]

  ●xxhdpi [3倍]

  ●xxxhdpi [4倍]

链接:http://www.imooc.com/wenda/detail/261436

5、注意内存开销

对你所使用的语言与库的成本与开销有所了解,从开始到结束,在设计你的app时谨记这些信息。通常,表面上看起来无关痛痒(innocuous)的事情也许实际上会导致大量的开销。例如:

  • Enums的内存消耗通常是static constants的2倍。你应该尽量避免在Android上使用enums。
  • 在Java中的每一个类(包括匿名内部类)都会使用大概500 bytes。
  • 每一个类的实例花销是12-16 bytes。
  • 往HashMap添加一个entry需要额一个额外占用的32 bytes的entry对象。

6、FQ利器

***和VPN,下载地址:http://61.40.206.230:3699/cn/download.aspx

ADT更新FQ:Android SDK Manager->Tools->Option->

7、Json

介绍:http://json.org/

格式化:http://www.bejson.com/

8、依赖项目中出现-case expressions must be constant expressions

那么最好的解决办法是,用if语句而不是swith去解决这个问题

9、关于libs下的so包

armeabi默认选项,
支持基于 ARM* v5TE 的设备
支持软浮点运算(不支持硬件辅助的浮点计算)
支持所有 ARM* 设备

armeabi-v7a
支持基于 ARM* v7 的设备
支持硬件 FPU 指令
支持硬件浮点运算

不同手机由于cpu的不同,使用不同的驱动。


ABI:指应用基于哪种指令集来进行编译,ABI常用的总共有四种,分别是armeabi、armeabi-v7a、mips、x86,它们都是表示cpu的类型。


其次这4个编译选项的含义:
1.‘armeabi’ – 默认选项,将创建以基于 ARM* v5TE 的设备为目标的库。 具有这种目标的浮点运算使用软件浮点运算。 使用此 ABI 创建的二进制代码将可以在所有 ARM* 设备上运行。


2.‘armeabi-v7a’ – 创建支持基于 ARM* v7 的设备的库,并将使用硬件 FPU 指令。


3.‘x86’ – 生成的二进制代码可支持包含基于硬件的浮点运算的 IA-32 指令集.


4.mips — 支持应用二进制接口


APP_ABI目前能取得值包括:(1)、32位:armeabi、armeabi-v7a、x86、mips;(2)、64位:arm64-v8a,x86_64, mips64;


10、startActivityForResult的requestCode不能超过16位即65536,否则crash而且很难看出来。


11、百度定位出现经纬度一样,且为科学计数法值,因为so包缺失。


12、

        try {
            PackageManager packageManager=mContext.getPackageManager();
            Drawable drawable=packageManager.getResourcesForApplication("com.tencent.qq").

getDrawable(0x7f020110);
            mOnlineTv.setBackground(drawable);
        }catch (Exception e){
            showToast(e.getMessage());
        }

上面可以获取其他应用的图片,只要知道id

13、

Intent intent = new Intent(Intent.ACTION_MAIN);

        ComponentName cn = new ComponentName("com.tencent.qq", "com.tencent.qq.activity.LoginActivity");
        intent.setComponent(cn);
        startActivity(intent);

14、

为什么要关闭组件? 
在用到组件时,有时候我们可能暂时性的不使用组件,但又不想把组件kill掉,比如创建了一个broadcastReceiver广播监听器,用来想监听第一次开机启动后获得系统的许多相关信息,并保存在文件中,这样以后每次开机启动就不需要再去启动该服务了,也就是说如果没有把receiver关闭掉,就算是不做数据处理,但程序却还一直在后台运行会消耗电量和内存,这时候就需要把这个receiver给关闭掉。 


如何关闭组件? 
关闭组件其实并不难,只要创建packageManager对象和ComponentName对象,并调用packageManager对象的setComponentEnabledSetting方法。

public void setComponentEnabledSetting (ComponentName componentName, int newState, int flags)
componentName:组件名称 
newState:组件新的状态,可以设置三个值,分别是如下: 
不可用状态:COMPONENT_ENABLED_STATE_DISABLED 
可用状态:COMPONENT_ENABLED_STATE_ENABLED 
默认状态:COMPONENT_ENABLED_STATE_DEFAULT 
flags:行为标签,值可以是DONT_KILL_APP或者0。 0说明杀死包含该组件的app

public int getComponentEnabledSetting(ComponentName componentName)

获取组件的状态


实例:

实例一:禁止开机启动的Receiver(可以是第三方的receiver)

final ComponentName receiver = new ComponentName(context,需要禁止的receiver); 
 final PackageManager pm = context.getPackageManager(); 
 pm.setComponentEnabledSetting(receiver,PackageManager.COMPONENT_ENABLED_STATE_DISABLED,PackageManager.DONT_KILL_APP);  }


实例二:隐藏应用图标

如果设置一个app的mainActivity为COMPONENT_ENABLED_STATE_DISABLED状态

则不会再launcher的程序图标中发现该app

PackageManager packageManager = getPackageManager();
        ComponentName componentName = new ComponentName(this, StartActivity.class);
        int res = packageManager.getComponentEnabledSetting(componentName);
        if (res == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT
                || res == PackageManager.COMPONENT_ENABLED_STATE_ENABLED) {
            // 隐藏应用图标
            packageManager.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
                    PackageManager.DONT_KILL_APP);
        } else {
            // 显示应用图标
            packageManager.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DEFAULT,
                    PackageManager.DONT_KILL_APP);
        }

上面代码可以打开其他app应用,只要你知道对方的路径

PS:技巧会慢慢补充,如果你想知道什么 ,请给我留言!


转载于:https://www.cnblogs.com/hehehaha/p/6147345.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值