美文网首页
安卓学习笔记2019-05-09

安卓学习笔记2019-05-09

作者: 我关注的人 | 来源:发表于2019-05-09 13:32 被阅读0次

    安卓学习笔记

    组件

    Activity

    • 生命周期
    • 启动方式
      • 作为APP的MAIN_ACTIVITY启动
      • startActivity()
      • startActivityForResult()
        • 有返回值
    • 主要工作
      • UI绘制,绑定事件
        • UI只能在主线程绘制。多线程情况下通过Handler或者广播接收来自其他线程的绘制申请。
      • 权限申请与检查(OnResum)
        • 动态权限申请

    参考资料:

    Service

    长生命(不容易被销毁)、无关UI运行在主线程(不能执行耗时操作)的组件。

    生命周期

    • service(被开启,还允许绑定)的生命周期 service(被开启,还允许绑定)的生命周期
    • onCreate()
      • 首次创建服务调用
      • 只会调用一次
    • onStartCommand()
      • 当组件调用startService()被调用时,该方法会随之调用
      • 可以多次被调用,因为Service可以被多次start
      • 返回值为Int类型。以此确定在Service被kill之后是否自动重建Service或如何重建Service。
    • onBind()
      • 当组件调用bindService()被调用时,该方法会随之调用
      • 可以多次被调用,因为Service可以被多次bind
      • 返回值为IBinder接口实现类。
    • onUnbind()
      • 当组件调用unbindService()时,该方法会随之调用
    • onRebind()
      • 当旧的组件与服务解绑后,另一个新的组件与服务绑定,onUnbind() 返回 true 时,系统将调用此方法。
    • onDestroy()

    启动方式

    • startService()
      • 由此启动的Service会在后台无限期运行,需组件调用 stopSelf() 方法或者其他组件调用 stopService()方法
      • 无返回值
    • bindService()
      • 提供了IBinder接口,允许绑定组件与被绑定服务交互,需组件调用unbindService()解绑
      • 多个组件可以绑定在一个服务上
      • 由此启动的Service会在所有绑定解除后自动销毁
      • 无返回值
    • 组件可以绑定一个由startService()启动的Service,此时手动销毁Service需要等待绑定解绑

    清单文件声明

    Service类别

    普通(start)
    可交互服务的后台服务(bind)
    • 自有应用内
      • 通过扩展IBinder并从onBind()返回一个实例
    • 跨应用(多进程)
      • Messenger串行处理
        • onBind()中返回new Messenger(Handler) 实例
    • AIDL多线程处理
    长久运行的前台服务
    • 后台服务优先级相对较低,容易被回收资源。前台服务可以一直保持运行状态而不被系统回收
    • 必须在状态栏提供通知。在服务停止前通知不可消除。
    • 启动方式
      • startForeground(int id, Notification notification)
      • stopForeground(boolean removeNotification)
    • IntentService
      • 可以执行耗时操作
      • 继承 IntentService 并覆写 onHandlerIntent 函数

    参考资料:

    1. Android Service
    2. Android Service 生命周期浅析

    Broadcast

    ContentProvider

    Fragment

    1. Fragment 与 Fragment 相互切换之间的生命周期方法

    Notification

    参考资料:

    1. NotificationCompat.Builder过时,失效

    API

    SQLite

    参考资料:

    1. SQLite用法
    2. 获取本地音频文件
    3. cursor 的遍历时 moveToFirst 和 moveToNext 的区别

    MediaPlayer

    参考资料:

    1. Android 开发之 MdiaPlayer 详解

    UI

    ConstraintLayout

    参考资料:

    1. 约束布局 ConstraintLayout

    LinearLayout

    DrawerLayout

    • NavigationView
    1. DrawerLayout 禁用侧边滑动

    TabLayout

    1. Android 使用 TabLayout 实现单行标签布局

    View

    参考资料:

    1. setCompoundDrawablesWithIntrinsicBounds
    2. getMeasuredHeight () 与 getHeight
    3. NestedScrollView、RecycleView、ViewPager 等布局方面的常见问题汇总,及解决

    RecycleView

    参考资料:

    1. RecyclerView 使用方法总结
    2. ItemDecoration 从入门到实现吸顶效果
    3. ItemDecoration 解析 (二) onDraw onDrawOver
    4. RecyclerView 的高效触摸监听
    5. 使用 RecyclerView 实现滚动控件
    6. Android 使用 RecyclerView 实现(仿微信)的联系人 A-Z 字母排序和过滤搜索功能

    Scollview

    参考资料:

    1. Scrollview 上滑停靠
    2. Android 可滑动表格的简单实现
    3. Android ScrollView+ViewPager 固定顶部控件,自动吸顶效果

    ViewPager

    参考资料:

    1. viewpager用法
    2. ViewPager 切换 Fragment 生命周期变化

    ImageView

    • 自定义圆形imageview

    BottomNavigation

    参考资料:

    1. Android 底部导航 BottomNavigationBar

    Toolbar

    参考资料:

    1. Toolbar 的正确使用姿势

    Button

    参考资料:

    1. button 按钮圆角加边框点击效果显示

    资源

    Drawable

    参考资料:

    1. Android XML shape 标签使用详解
    2. Android 通过 shape 实现三角形气泡效果

    Tint

    参考资料:

    1. 浅谈 Android L 的 Tint(着色)

    个人代码一些实现

    相关文章

      网友评论

          本文标题:安卓学习笔记2019-05-09

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