android开发记录一些技巧

一些技巧

  1. 获取全局context
public class MineApplication extends Application {
    private static Context context;

    public static Context getContext() {
        return context;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        context = getApplicationContext();
    }

}
  1. 使用Intent传递对象

    Serializable 比Parcelable 效率低??

  2. 定制自己的日志工具

  3. 创建定时任务

    定时启动某服务setExact比set精确

    AlarmManager manager = (AlarmManager) getSystemService(ALARM_SERVICE);
    int anHour = 8 * 60 * 60 * 1000; // 这是8小时的毫秒数
    long triggerAtTime = SystemClock.elapsedRealtime() + anHour;
    Intent i = new Intent(this, AutoUpdateService.class);
    PendingIntent pi = PendingIntent.getService(this, 0, i, 0);
    manager.cancel(pi);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
               manager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP, triggerAtTime, pi);
           }else {
               manager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, triggerAtTime, pi);
           }
  4. Doze模式

    用户长时间不使用手机,会进入Doze模式,很多行为被限制

    setAndAllowWhileIdle setExactAndAllowWhileIdle在doze模式也可以执行?

  5. 多窗口模式

    1).避免进入多窗口模式,重新创建

    android:configChanges=”orientation|keyboardHidden|screenSize|screenLayout”

    2).android:resizeableActivity=”false”

    此节点是否支持多窗口 activity或application

    3).targetSdkVersion 低于24并且不支持横竖屏切换,就不支持多窗口模式

  6. lambda表达式

    使支持labda表达式

    android.compileOptions.sourceCompatibility 1.8
    android.compileOptions.targetCompatibility 1.8

    类似es6

    swipeRefresh.setOnRefreshListener(() -> 
       requestWeather(weatherId)
    );
    navButton.setOnClickListener((v)-> 
           drawerLayout.openDrawer(GravityCompat.START)
    );
  7. SerializedName

    public class Now{
    //通过注释的方式建立映射关系
       @SerializedName("tmp")
       public String temperature;
    
       @SerializedName("cond")
       public More more;
    
       public class More {
    
           @SerializedName("txt")
           public String info;
    
       }
    
    }
  8. 背景图和状态栏融合

    if (Build.VERSION.SDK_INT >= 21) {
       View decorView = getWindow().getDecorView();
       decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
               | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
       getWindow().setStatusBarColor(Color.TRANSPARENT);
    }
    //对decorView进行处理
目录 第1章 掀起你的盖头来——初识Android 1.1 认识Android 1.2 Android的背景 1.2.1 Android的历史 1.2.2 Android的发展 1.3 我的Android主 1.3.1 开发基于Android平台的应用 1.3.2 参加Android开发者大赛 1.3.3 个人英雄主义再现——得到更多人的认可和尊重 1.3.4 获得应有的收益——AndroidMarket 1.4 真实体验——Android模拟器 1.4.1 模拟器概述 1.4.2 模拟器和真机的区别 1.4.3 模拟器使用注意事项 1.5 更上一层楼——加入Android开发社区 1.6 本章小结 第2章 工欲善其事 必先利其器——搭建Android开发环境 2.1 开发Android应用前的准备 2.1.1 Android开发系统要求 2.1.2 Android软件开发包 2.1.3 其他注意事项 2.2 Windows开发环境搭建 2.2.1 JDK、Eclipse、AndroidSDK软件安装 2.2.2 SDK的家在哪里——设定AndroidSDKHome 2.2.3 真的准备好了吗——开发环境验证 2.2.4 创建Android虚拟设备(AVD) 2.3 Linux一族——Ubuntu开发环境搭建 2.3.1 Java、Eclipse和ADT插件安装 2.3.2 设定AndroidSDKHome 2.4 MacOS一族——苹果开发环境搭建 2.5 本章小结 第3章 清点可用资本——AndroidSDK介绍 3.1 AndroidSDK基础 3.2 深入探寻AndroidSDK的密码 3.2.1 AndroidSDK目录结构 3.2.2 android.jar及内部结构 3.2.3 SDK文档及阅读技巧 3.2.4 先来热热身——AndroidSDK例子解析 3.2.5 SDK提供的工具介绍 3.3 Android典型包分析 3.3.1 开发的基石——AndroidAPI核心开发包介绍 3.3.2 拓展开发外延——Android可选API介绍 3.4 本章小结 第4章 赚钱的市场——AndroidMarket及应用发布 4.1 GoogleMarket产生背景与目的 4.2 体验“选货”的乐趣——在G1上体验Market的使用 4.3 Android开发活动及特色应用 4.3.1 开发应用的领域 4.3.2 AndroidMarket特色应用一览 4.4 你也可以东家——申请Market账号 4.4.1 卖东西要先入伙——准备工作 4.4.2 入伙过程——申请 4.5 开张了——在Market上发布应用 4.5.1 发布时可能遇到的错误 4.5.2 卖东西也要签名——生成签名文件 4.5.3 打包、签名、发布应用 4.6 本章小结
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值