美文网首页Android开发
每次吃一点Androidの小知识

每次吃一点Androidの小知识

作者: 耑意儿 | 来源:发表于2017-03-30 00:45 被阅读197次
    目录:
    1、Service
    2、AndroidManifest
    3、Github搜索技巧
    4、AndroidStudio主题设置
    

    Android小仙

    1. Service

    Service lifeCycle
    从上图可以看到,onStart()方法被onStartCommand()方法取代了。
    那么问题来了,onStart()onStartCommand()的区别是什么呢?
    onStart()是android2.0以下的版本使用的,而onStartCommand()则是android2.0以上的版本使用的。
    两个可以同时使用不会有冲突,执行的时候先调用onStartCommand(),再调用onStart()

    1.1. onStartCommand()方法

    public @StartResult int onStartCommand(Intent intent, @StartArgFlags int flags, int startId) {
            onStart(intent, startId);
            return mStartCompatibility ? START_STICKY_COMPATIBILITY : START_STICKY;
        }
    

    主要看四种返回值类型

    • START_STICKY:如果service进程被kill掉,保留service的状态为开始状态,但不保留递送的intent对象。随后系统会尝试重新创建service,由于服务状态为开始状态,所以创建服务后一定会调用onStartCommand(Intent,int,int)方法。如果在此期间没有任何启动命令被传递到service,那么参数Intent将为null。
    • START_NOT_STICKY:“非粘性的”。使用这个返回值时,如果在执行完onStartCommand后,服务被异常kill掉,系统不会自动重启该服务
    • START_REDELIVER_INTENT:重传Intent。使用这个返回值时,如果在执行完onStartCommand后,服务被异常kill掉,系统会自动重启该服务,并将Intent的值传入。
    • START_STICKY_COMPATIBILITY:START_STICKY的兼容版本,但不保证服务被kill后一定能重启。

    1.2. Service永不被kill的方法

    • 将service优先级设置到最高,1000
    • onStartCommand return START_STICKY
    • 在Service的onDestroy中,发送广播重启自己
    • 设置android:persistent="true"
    • Service提升为前台进程级别
      就是在onStartCommand里面调用 startForeground()方法把Service提升为前台进程级别,然后再onDestroy里面要记得调用stopForeground ()方法。

    关于进程保活的两三事——新手升级经验卡

    1.3. 相对强大的进程保活方案

    参考资料:
    双进程守护,驻留,杀不死服务:MarsDaemon
    其他:参考同类APP的做法,如:<a>闪铃</a>

    1.4. 用户配置保活

    • 设置悬浮窗
    • 设置自启动
    • 设置常驻服务
    • 设置允许高耗电

    2. AndroidManifest

    2.1. Application节点说明

    先上例子

        <application
            android:name=".MyApplication"
            android:allowBackup="true"
            android:allowClearUserData="false"
            android:excludeFromRecents="true"
            android:hardwareAccelerated="true"
            android:largeHeap="true"
            android:icon="@drawable/icon"
            android:label="@string/app_name"
            android:persistent="true"
            android:theme="@style/AppTheme" >
        </application>
    

    简单的不说,来看看下面的

    • android:allowBackup="true"
      允许应用程序参与备份。如果将该属性设置为false,则即使备份整个系统,也不会执行这个应用程序的备份操作,而整个系统备份能导致所有应用程序数据通过ADB来保存。其默认值为true。
    • android:excludeFromRecents="true"
      使应用从最近使用应用列表中剔除
    • android:hardwareAccelerated="true"
      使用硬件加速功能。指示硬件加速渲染功能是否对应用程序中的所有Activity和View启用。其默认值是false。
    • android:persistent="true"
      将应用设置为永久性应用,开机自启。实质就是拥有persistent=true属性的app将不能被kill或kill后会自动重启。其默认值是false。
    • android:largeHeap="true"此属性指示应用程序是否使用一个比较大的堆创建。它的默认值是false。
    • android:supportsRtl=true:支持屏幕从右到左
      参考资料:Android清单文件详解(五)----<application>的属性详解

    2.2. 创建桌面快捷方式适配不同机型

    各个手机产商自定义的创建桌面快捷方式的权限
    参考:Permissions used in Alipay 9.6.6

    uses-permission: name='com.alipay.permission.ALIPAY_UPDATE_CREDENTIALS'
    uses-permission: name='com.android.launcher.permission.INSTALL_SHORTCUT'
    uses-permission: name='android.permission.BLUETOOTH'
    uses-permission: name='android.permission.CHANGE_WIFI_STATE'
    uses-permission: name='android.permission.CAMERA'
    uses-permission: name='android.permission.ACCESS_NETWORK_STATE'
    uses-permission: name='android.permission.MODIFY_AUDIO_SETTINGS'
    uses-permission: name='com.yunos.permission.TYID_MGR_SERVICE'
    uses-permission: name='android.permission.RECEIVE_SMS'
    uses-permission: name='android.permission.AUTHENTICATE_ACCOUNTS'
    uses-permission: name='com.alipay.permission.ALIPAY_USE_CREDENTIALS'
    uses-permission: name='com.aliyun.permission.TYID_MGR_SERVICE'
    uses-permission: name='android.permission.BATTERY_STATS'
    uses-permission: name='android.permission.READ_PHONE_STATE'
    uses-permission: name='android.permission.WRITE_EXTERNAL_STORAGE'
    uses-permission: name='android.permission.NFC'
    uses-permission: name='android.permission.RECORD_AUDIO'
    uses-permission: name='android.permission.READ_SMS'
    uses-permission: name='com.taobao.permission.UPDATE_CREDENTIALS'
    uses-permission: name='com.yunos.permission.STORAGE_SERVICE'
    uses-permission: name='com.sonyericsson.home.permission.BROADCAST_BADGE'
    uses-permission: name='com.android.launcher.permission.UNINSTALL_SHORTCUT'
    uses-permission: name='android.permission.READ_CONTACTS'
    uses-permission: name='android.permission.USE_CREDENTIALS'
    uses-permission: name='android.permission.VIBRATE'
    uses-permission: name='com.yunos.permission.TYID_SERVICE'
    uses-permission: name='android.permission.ACCESS_FINE_LOCATION'
    uses-permission: name='android.permission.FLASHLIGHT'
    uses-permission: name='com.taobao.permission.USE_CREDENTIALS'
    uses-permission: name='android.permission.ACCESS_COARSE_LOCATION'
    uses-permission: name='android.permission.MANAGE_ACCOUNTS'
    uses-permission: name='android.permission.CALL_PHONE'
    uses-permission: name='android.permission.READ_LOGS'
    uses-permission: name='android.permission.GET_ACCOUNTS'
    uses-permission: name='android.permission.GET_TASKS'
    uses-permission: name='android.permission.ACCESS_WIFI_STATE'
    uses-permission: name='com.android.launcher.permission.READ_SETTINGS'
    uses-permission: name='com.htc.launcher.permission.READ_SETTINGS'
    uses-permission: name='com.majeur.launcher.permission.UPDATE_BADGE'
    uses-permission: name='com.aliyun.permission.TYID_SERVICE'
    uses-permission: name='android.permission.WAKE_LOCK'
    uses-permission: name='android.permission.BLUETOOTH_ADMIN'
    uses-permission: name='android.permission.RECEIVE_BOOT_COMPLETED'
    uses-permission: name='android.permission.INTERNET'
    uses-permission: name='android.permission.SYSTEM_ALERT_WINDOW'
    uses-permission: name='com.htc.launcher.permission.UPDATE_SHORTCUT'
    uses-permission: name='android.permission.WRITE_SETTINGS'
    uses-permission: name='com.anddoes.launcher.permission.UPDATE_COUNT'
    uses-permission: name='android.permission.READ_PROFILE'
    uses-permission: name='android.permission.BROADCAST_STICKY'
    uses-permission: name='com.aliyun.permission.STORAGE_SERVICE'
    uses-permission: name='nxp.permission.ACCESS_WALLET_SERVICE'
    uses-permission: name='com.samsung.android.authservice.permission.READ_CONTENT_PROVIDER'
    uses-permission: name='android.permission.USE_FINGERPRINT'
    uses-permission: name='android.permission.MANAGE_FINGERPRINT'
    permission: com.eg.android.AlipayGphone.permission.MIPUSH_RECEIVE
    uses-permission: name='com.eg.android.AlipayGphone.permission.MIPUSH_RECEIVE'
    uses-permission: name='com.miui.mihome2.permission.READ_SETTINGS'
    uses-permission: name='com.miui.mihome2.permission.WRITE_SETTINGS'
    uses-permission: name='com.aliyun.homeshell.permission.WRITE_SETTINGS'
    uses-permission: name='com.aliyun.homeshell.permission.READ_SETTINGS'
    uses-permission: name='com.lenovo.launcher.permission.READ_SETTINGS'
    uses-permission: name='com.lenovo.launcher.permission.WRITE_SETTINGS'
    uses-permission: name='com.iLoong.permission.WRITE_SETTINGS'
    uses-permission: name='com.iLoong.permission.READ_SETTINGS'
    uses-permission: name='cn.nubia.launcher.permission.WRITE_SETTINGS'
    uses-permission: name='cn.nubia.launcher.permission.READ_SETTINGS'
    uses-permission: name='com.smartisanos.launcher.WRITE_DATABASE'
    uses-permission: name='com.smartisanos.launcher.READ_DATABASE'
    uses-permission: name='com.smartisanos.launcher.data.ExportDataProvider'
    uses-permission: name='com.teslacoilsw.launcher.permission.WRITE_SETTINGS'
    uses-permission: name='com.teslacoilsw.launcher.permission.READ_SETTINGS'
    uses-permission: name='com.meizu.flyme.launcher.permission.READ_SETTINGS'
    uses-permission: name='com.meizu.flyme.launcher.permission.WRITE_SETTINGS'
    uses-permission: name='com.ztemt.launcher.permission.WRITE_SETTINGS'
    uses-permission: name='com.ztemt.launcher.permission.READ_SETTINGS'
    uses-permission: name='com.zte.lqsoft.launcher.permission.READ_SETTINGS'
    uses-permission: name='com.zte.lqsoft.launcher.permission.WRITE_SETTINGS'
    uses-permission: name='com.baoruan.launcher2.permission.WRITE_SETTINGS'
    uses-permission: name='com.baoruan.launcher2.permission.READ_SETTINGS'
    uses-permission: name='com.fineos.launcher.permission.READ_SETTINGS'
    uses-permission: name='com.fineos.launcher.permission.WRITE_SETTINGS'
    uses-permission: name='com.ibingo.launcher.permission.WRITE_SETTINGS'
    uses-permission: name='com.ibingo.launcher.permission.READ_SETTINGS'
    uses-permission: name='com.zui.launcher.permission.WRITE_SETTINGS'
    uses-permission: name='com.zui.launcher.permission.READ_SETTINGS'
    uses-permission: name='com.qihoo360.screenlock.permission.READ_LOCAL_THEME'
    uses-permission: name='com.qihoo360.screenlock.permission.WRITE_LOCAL_THEME'
    uses-permission: name='com.zte.mifavor.launcher.permission.WRITE_SETTINGS'
    uses-permission: name='com.zte.mifavor.launcher.permission.READ_SETTINGS'
    uses-permission: name='com.lo.launcher.permission.READ_SETTINGS'
    uses-permission: name='com.lo.launcher.permission.WRITE_SETTINGS'
    uses-permission: name='com.android.tpwlauncher2.permission.WRITE_SETTINGS'
    uses-permission: name='com.android.tpwlauncher2.permission.READ_SETTINGS'
    uses-permission: name='com.android.sprdlauncher1.permission.READ_SETTINGS'
    uses-permission: name='com.android.sprdlauncher1.permission.WRITE_SETTINGS'
    uses-permission: name='com.s.launcher.permission.WRITE_SETTINGS'
    uses-permission: name='com.s.launcher.permission.READ_SETTINGS'
    uses-permission: name='com.zte.mobile.ZteLauncher3D.permission.READ_SETTINGS'
    uses-permission: name='com.zte.mobile.ZteLauncher3D.permission.WRITE_SETTINGS'
    uses-permission: name='com.android.launcher23.permission.READ_SETTINGS'
    uses-permission: name='com.android.launcher23.permission.WRITE_SETTINGS'
    uses-permission: name='com.mgyun.permission.READ_SETTINGS'
    uses-permission: name='com.mgyun.permission.WRITE_SETTINGS'
    uses-permission: name='com.asus.launcher3.permission.READ_SETTINGS'
    uses-permission: name='com.asus.launcher3.permission.WRITE_SETTINGS'
    uses-permission: name='com.tsf.shell.permission.READ_SETTINGS'
    uses-permission: name='com.tsf.shell.permission.WRITE_SETTINGS'
    uses-permission: name='com.tul.aviate.permission.READ_SETTINGS'
    uses-permission: name='com.tul.aviate.permission.WRITE_SETTINGS'
    uses-permission: name='com.lenovo.launcherhdmarket.permission.READ_SETTINGS'
    uses-permission: name='com.lenovo.launcherhdmarket.permission.WRITE_SETTINGS'
    uses-permission: name='com.hola.launcher.permission.READ_SETTINGS'
    uses-permission: name='com.hola.launcher.permission.WRITE_SETTINGS'
    uses-permission: name='com.qihoo360.home.permission.WRITE_SETTINGS'
    uses-permission: name='com.qihoo360.home.permission.READ_SETTINGS'
    uses-permission: name='com.slim.slimlauncher.permission.READ_SETTINGS'
    uses-permission: name='com.slim.slimlauncher.permission.WRITE_SETTINGS'
    uses-permission: name='com.huaqin.launcherEx.permission.WRITE_SETTINGS'
    uses-permission: name='com.huaqin.launcherEx.permission.READ_SETTINGS'
    uses-permission: name='com.epic.launcher.tw.permission.WRITE_SETTINGS'
    uses-permission: name='com.epic.launcher.tw.permission.READ_SETTINGS'
    uses-permission: name='com.android.lewalauncher.permission.READ_SETTINGS'
    uses-permission: name='com.android.lewalauncher.permission.WRITE_SETTINGS'
    uses-permission: name='com.Dean.launcher.permission.READ_SETTINGS'
    uses-permission: name='com.Dean.launcher.permission.WRITE_SETTINGS'
    uses-permission: name='app.cobo.launcher.permission.WRITE_SETTINGS'
    uses-permission: name='app.cobo.launcher.permission.READ_SETTINGS'
    uses-permission: name='com.alphalp.launcher.permission.WRITE_SETTINGS'
    uses-permission: name='com.alphalp.launcher.permission.READ_SETTINGS'
    uses-permission: name='com.lollipop.launcher.permission.READ_SETTINGS'
    uses-permission: name='com.lollipop.launcher.permission.WRITE_SETTINGS'
    uses-permission: name='com.l.launcher.permission.READ_SETTINGS'
    uses-permission: name='com.l.launcher.permission.WRITE_SETTINGS'
    uses-permission: name='com.dlto.atom.launcher.permission.READ_SETTINGS'
    uses-permission: name='com.dlto.atom.launcher.permission.WRITE_SETTINGS'
    uses-permission: name='com.android.sprdlauncher2.permission.WRITE_SETTINGS'
    uses-permission: name='com.android.sprdlauncher2.permission.READ_SETTINGS'
    uses-permission: name='com.konka.launcher2.permission.READ_SETTINGS'
    uses-permission: name='com.konka.launcher2.permission.WRITE_SETTINGS'
    uses-permission: name='com.mycheering.launcher.permission.WRITE_SETTINGS'
    uses-permission: name='com.mycheering.launcher.permission.READ_SETTINGS'
    uses-permission: name='com.microsoft.launcher.permission.READ_SETTINGS'
    uses-permission: name='com.microsoft.launcher.permission.WRITE_SETTINGS'
    uses-permission: name='com.nicelauncher.lolauncher.permission.READ_SETTINGS'
    uses-permission: name='com.nicelauncher.lolauncher.permission.WRITE_SETTINGS'
    uses-permission: name='com.jui.launcher3.permission.READ_SETTINGS'
    uses-permission: name='com.jui.launcher3.permission.WRITE_SETTINGS'
    uses-permission: name='com.android.launcher2.permission.READ_SETTINGS'
    uses-permission: name='com.android.launcher2.permission.WRITE_SETTINGS'
    uses-permission: name='com.qihoo360.launcher.permission.READ_SETTINGS'
    uses-permission: name='com.qihoo360.launcher.permission.WRITE_SETTINGS'
    uses-permission: name='com.lge.launcher.permission.READ_SETTINGS'
    uses-permission: name='com.lge.launcher.permission.WRITE_SETTINGS'
    uses-permission: name='net.qihoo.launcher.permission.READ_SETTINGS'
    uses-permission: name='net.qihoo.launcher.permission.WRITE_SETTINGS'
    uses-permission: name='org.adw.launcher_donut.permission.READ_SETTINGS'
    uses-permission: name='org.adw.launcher_donut.permission.WRITE_SETTINGS'
    uses-permission: name='com.huawei.launcher3.permission.READ_SETTINGS'
    uses-permission: name='com.huawei.launcher3.permission.WRITE_SETTINGS'
    uses-permission: name='com.sec.android.app.twlauncher.settings.READ_SETTINGS'
    uses-permission: name='com.sec.android.app.twlauncher.settings.WRITE_SETTINGS'
    uses-permission: name='com.anddoes.launcher.permission.READ_SETTINGS'
    uses-permission: name='com.anddoes.launcher.permission.WRITE_SETTINGS'
    uses-permission: name='com.tencent.qqlauncher.permission.READ_SETTINGS'
    uses-permission: name='com.tencent.qqlauncher.permission.WRITE_SETTINGS'
    uses-permission: name='com.huawei.launcher2.permission.READ_SETTINGS'
    uses-permission: name='com.huawei.launcher2.permission.WRITE_SETTINGS'
    uses-permission: name='com.ebproductions.android.launcher.permission.READ_SETTINGS'
    uses-permission: name='com.ebproductions.android.launcher.permission.WRITE_SETTINGS'
    uses-permission: name='telecom.mdesk.permission.READ_SETTINGS'
    uses-permission: name='telecom.mdesk.permission.WRITE_SETTINGS'
    uses-permission: name='dianxin.permission.ACCESS_LAUNCHER_DATA'
    uses-permission: name='com.modaco.android.launchergb.permission.READ_SETTINGS'
    uses-permission: name='com.modaco.android.launchergb.permission.WRITE_SETTINGS'
    uses-permission: name='com.sec.android.app.launcher.permission.READ_SETTINGS'
    uses-permission: name='com.sec.android.app.launcher.permission.WRITE_SETTINGS'
    uses-permission: name='com.bbk.launcher2.permission.READ_SETTINGS'
    uses-permission: name='com.bbk.launcher2.permission.WRITE_SETTINGS'
    uses-permission: name='com.android.launcher.permission.WRITE_SETTINGS'
    uses-permission: name='com.htc.launcher.permission.WRITE_SETTINGS'
    uses-permission: name='com.sec.android.app.twlauncher.WRITE_SETTINGS'
    uses-permission: name='com.sec.android.app.twlauncher.READ_SETTINGS'
    uses-permission: name='org.adw.launcher.permission.READ_SETTINGS'
    uses-permission: name='org.adw.launcher.permission.WRITE_SETTINGS'
    uses-permission: name='org.adwfreak.launcher.permission.READ_SETTINGS'
    uses-permission: name='org.adwfreak.launcher.permission.WRITE_SETTINGS'
    uses-permission: name='com.gau.go.launcherex.permission.READ_SETTINGS'
    uses-permission: name='com.gau.go.launcherex.permission.WRITE_SETTINGS'
    uses-permission: name='com.fede.launcher.permission.READ_SETTINGS'
    uses-permission: name='com.fede.launcher.permission.WRITE_SETTINGS'
    uses-permission: name='com.oppo.launcher.permission.READ_SETTINGS'
    uses-permission: name='com.oppo.launcher.permission.WRITE_SETTINGS'
    uses-permission: name='com.nd.android.launcher.permission.READ_SETTINGS'
    uses-permission: name='com.nd.android.launcher.permission.WRITE_SETTINGS'
    uses-permission: name='com.android.mylauncher.permission.READ_SETTINGS'
    uses-permission: name='com.android.mylauncher.permission.WRITE_SETTINGS'
    uses-permission: name='com.huawei.android.launcher.permission.READ_SETTINGS'
    uses-permission: name='com.huawei.android.launcher.permission.WRITE_SETTINGS'
    uses-permission: name='com.huawei.launcher.permission.READ_SETTINGS'
    uses-permission: name='com.huawei.launcher.permission.WRITE_SETTINGS'
    uses-permission: name='com.mx.launcher.permission.READ_SETTINGS'
    uses-permission: name='com.mx.launcher.permission.WRITE_SETTINGS'
    uses-permission: name='com.android.launcher3.permission.READ_SETTINGS'
    uses-permission: name='com.android.launcher3.permission.WRITE_SETTINGS'
    uses-permission: name='com.google.android.launcher.permission.READ_SETTINGS'
    uses-permission: name='com.google.android.launcher.permission.WRITE_SETTINGS'
    uses-permission: name='android.permission.MOUNT_UNMOUNT_FILESYSTEMS'
    uses-permission: name='android.permission.READ_EXTERNAL_STORAGE'
    

    3. Github搜索技巧

    • 搜索时星星数量越多越好
    • 对应作者的其他项目的反馈情况有参考价值
    • 看issues一栏里面已关闭和未关闭的问题
    • 翻开库直接看源码查质量

    4.AndroidStudio主题设置和字体设置

    4.1、设置主题色

    Darcula主题是背景色为黑色的主题
    Default默认的主题是背景色为白色的主题
    设置方法:Android Studio -- Preferences -- Appearance&Behavior -- Appearance -- UI Options --Theme

    4.2、字体大小设置

    Android Studio -- Preferences -- Editor -- ColorScheme -- ColorSchemeFont -- size

    相关文章

      网友评论

        本文标题:每次吃一点Androidの小知识

        本文链接:https://www.haomeiwen.com/subject/osdyottx.html