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进行处理
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值