Android开发Tips(7)

作者: SpikeKing | 来源:发表于2016-05-07 13:44 被阅读1016次

    欢迎Follow我的GitHub, 关注我的简书. 其余参考Android目录.

    Android

    本文的合集已经编著成书,高级Android开发强化实战,欢迎各位读友的建议和指导。在京东即可购买:https://item.jd.com/12385680.html

    Android

    本文介绍关于Android的一些有趣或有用的知识点, 欢迎阅读.

    其余第一篇, 第二篇, 第三篇, 第四篇, 第五篇, 第六篇.


    不兼容 Gradle 版本

    条件: 执行gradle clean; gradle build报错.

    Error:(1, 0) Plugin with id 'com.android.application' not found
    

    原因: 使用gradle命令的版本过低, 如使用2.8版本编译2.10版本的项目. 查看gradle版本, gradle -v.

    升级Gradle命令的版本即可, 建立软连接命令.

    ln -s /Users/wangchenlong/Installations/gradle-all/gradle-2.10/bin/gradle gradle
    

    同时使用v2.8版本, 需要额外gradle命令, 如gradle-v2.8.

    ln -s /Users/wangchenlong/Installations/gradle-all/gradle-2.10/bin/gradle gradle-v2.8
    

    AS 2.0 的 Sugar ORM 数据库

    在使用Android Studio 2.x版本时, 会启用Instant Run会影响Sugar ORM数据库的使用. 取消勾选即可.

    Instant Run

    否则报错, 参考

    Sugar ORM No Such Table Exception
    

    AlarmManager 取消注册

    AlarmManager有时会被系统关闭, 需要重复注册, 保证鲁棒性, 但保证只有一个生效, 需要取消之前的设置.

    PendingIntent的标记选择FLAG_UPDATE_CURRENT, 而不是FLAG_CANCEL_CURRENT.

    PendingIntent.getBroadcast(appContext, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    

    设置之前取消即可, 为了安全, 可以捕获setRepeating的异常.

            // 设置之前先取消前一个PendingIntent
            am.cancel(pi);
    
            // 设置每一天的计时器. 添加异常捕获, 防止崩溃
            try {
                am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pi);
            } catch (Exception e) {
                e.printStackTrace();
            }
    

    否则报错: Too many alarms registered from pid.

    参考


    Jack Option

    Android Studio 2.1.0 版本支持Jack的功能, 即Java Android Compiler Kit. Jack是Android新的工具链, 优点是完全开源(与Oracle之争), 加快编译速度(节省一步), 提供代码优化与混淆功能.

    Tool Chain

    使用方式

    android {
        defaultConfig {
            jackOptions {
                enabled true
            }
        }
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        }
    }
    

    非常遗憾, 依赖注入库Dagger或Butterknife的核心库android-apt暂时不支持Jack, 参考.

    com.neenbedankt.gradle.plugins:android-apt:1.8
    

    需要编译版本Build Tools 24.0.0+, 即Android N以上.


    启动页面留白

    应用在启动时, 系统会加载数据, 需要启动完成Application的onCreate方法, Activity的onCreate与onResume方法, 会产生短暂的留白, 不可避免.

    也可能是黑色, 与应用的主题有关, light是白色, dark是黑色.

    一些主流应用都会解决这一问题, 如微信\QQ\网易云音乐等, 但某些应用可能并未注意. 去掉留白需要修改启动页面的主题样式, 设置windowBackground属性, 默认是白色, 可以修改为其他颜色或展示Logo图片.

    <style name="WelcomeTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
        <item name="android:windowFullscreen">true</item>
        <item name="android:windowBackground">@drawable/launch_logo</item>
    </style>
    

    并且把首页布局的背景设置为透明, 在加载完成后, 再显示广告或其他信息.

    android:background="@android:color/transparent"
    

    这样可以提升用户体验, 开发之道在于细节. Thx@柏毅老师.


    OK, that's all! Enjoy it!

    相关文章

      网友评论

        本文标题:Android开发Tips(7)

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