鹅厂实习| 周记(三)

鹅厂实习| 周记(三)以下是本周的知识清单:RemoteViewsPendingIntentJNI&NDK&ADB&AAPT一点小感悟1.RemoteViewsa.作用:为跨进程生成控件和修改控件属性提供一系列方法b.使用

以下是本周的知识清单:

  • RemoteViews
  • PendingIntent
  • JNI & NDK & ADB & AAPT
  • 一点小感悟

1.RemoteViews

官方介绍:A class that describes a view hierarchy that can be displayed in another process. The hierarchy is inflated from a layout resource file, and this class provides some basic operations for modifying the content of the inflated hierarchy. 翻译:一个描述视图的类,该视图可以在另一个进程中显示。构造时需要制定一个layout资源文件,该类提供了一些基本的操作方法来修改所描述的视图内容。

a.作用:为跨进程生成控件和修改控件属性提供一系列方法

注意:RemoteViews只是实现了Parcelable 接口,严格讲它并不是一个View,只是一个操作类

鹅厂实习| 周记(三)

b.使用

  • 构造函数:常用的构造方法如下(包名,布局资源文件id)
public RemoteViews(String packageName, int layoutId) {
    this(getApplicationInfo(packageName, UserHandle.myUserId()), layoutId);
}
  • 常用方法:更多方法见开发文档
    • setTextViewText(int viewId, CharSequence text):设置TextView显示的文字
    • setImageViewResource(int viewId, int srcId):设置ImageView显示的图片
    • setOnClickPendingIntent(int viewId, PendingIntent pendingIntent):设置View的监听事件

c.应用场景:具体步骤见5.1RemoteViews的应用

  • 通知:通过NotificationManager#notify()
  • 桌面小部件 :通过AppWidgetProvider

d.优缺点

  • 优点:使用传统方式、RemoteViews方式实现跨进程更新UI的对比,通过一次IPC可实现对多个View的操作,详见Android神奇”控件”一一RemoteViews
  • 缺点:支持View类型如下,不支持它们的子类和其他类型的View,更无法自定义View

FrameLayout、LinearLayout、RelativeLayout、GridLayout、AnalogClock、Button、Chronometer、ImageButton、ImageView、ProgressBar、TextView、ViewFlipper、ListView、GridView、StackView、AdapterViewFlipper、ViewStub

推荐阅读:源码分析见Android UI之跨进程组件RemoteViews


2.PendingIntent

a.作用:是待定Intent,让意图在合适的时间再执行,而不是立即执行

b.常用构造

  • public static PendingIntent getActivity(Context context, int requestCode, Intent intent, int flags):打开页面
  • public static PendingIntent getBroadcast(Context context, int requestCode, Intent intent, int flags):发送广播
  • public static PendingIntent getService(Context context, int requestCode, Intent intent, int flags):开启服务

c.参数描述

  • context:上下文
  • requestCode:PendingIntent发送方的请求码,一般设为0
  • intent:意图,当PendingIntent发生时,效果与startActivity()、sendBroadcaset()、startService()一样
  • flags:常见的类型如下
    • FLAG_ONE_SHOT:描述的PendingIntent只能使用一次,之后会被cancel
    • FLAG_NO_CREATE:若描述的PendingIntent不存在,直接返回null而不是创建
    • FLAG_CANCEL_CURRENT :若描述的PendingIntent已存在,则都会被cancel,之后再创建一个新的
    • FLAG_UPDATE_CURRENT:若描述的PendingIntent已存在,就都会被update

实例Notification 通知

d.匹配规则:满足内部Intent相同且requestCode也相同,则两个PendingIntent是相同的


3.JNI & NDK & ADB & AAPT

a.JNI

  • 全称:Java Native Interface,即Java本地接口,由Java提供
  • 作用:用于Java与C/C++交互,即Java可以通过JNI调用本地的C/C++代码、本地的C/C++的代码也可以调用java代码

b.NDK

c.ADB

d.AAPT

  • 全称:Android Asset Packaging Tool,即Android资源打包工具
  • 作用:查看、创建、更新ZIP格式的文档附件,将资源文件编译成二进制文件,存于SDK的build-tools目录下,在build scripts和IDE插件时会使用这个工具打包apk文件构成一个Android 应用程序
  • 命令Android AAPT详解

4.一点小感悟

近日最大的感受就是——年味不要太浓!年前年后那两周一直都处于“人不齐”状态、初八开工以来收红包收到手软、到处品尝同事从家乡带来的年货、出去聚餐也有了“正当”理由、元宵节的汤圆好好吃…进来感受下开工日的盛况~腾讯开工刷红包堪比“春运”,沙发板凳姜茶暖宝宝全上场

这周对我年前写的代码进行了review,来了十几个大佬,虽然提前做了准备但是还是紧张,短短一个半小时真的学到很多,除了技术上的收获,也给我今后再准备类似会议提供一些启发,例如,在讲代码前要先交代好背景,不是所有人都清楚具体需求,减少解释成本;演示大纲很有必要,但也要随时准备被提问各种问题、打乱节奏;最好走个完整流程来展示代码逻辑,只看代码的改动部分很难被理解…总之第一次做review还是挺不错的体验,非常感谢小哥哥们的耐心和建议~

性能优化tips

随着学生时代最后一个假期的结束,为期两个月的短暂的实习生活也快结束了,还要回校准备令人头大的论文,预计最后还有一篇实习周记和一篇《Android Gradle权威指南》的读书笔记,待七月毕业再回来就是有名分的鹅啦!

运动空间——第二条“腰带”

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/13242.html

(0)

相关推荐

  • ora-00258_ora00205 error in identifying

    ora-00258_ora00205 error in identifying问题描述:本来还在愉快的工作中,突然同时通知客户主数据库无法登陆了,心中莫名的一紧,赶紧登陆数据库查看,发现只有sys账号可以正常登录,其他账号登录均提示ORA00257错误。赶紧百度一下,看大致的意

    2023-02-08
    115
  • Windows系统安装配置MySQL5.6教程 超简单 解压版免安装直接使用

    Windows系统安装配置MySQL5.6教程 超简单 解压版免安装直接使用首先去MySQL官网下载压缩包 MySQL 官方网站地址:MySQL http://www.mysql.com/ 依次找到 Downloads -> Community -> M

    2023-02-08
    99
  • Java发送邮件必带超时时间配置[通俗易懂]

    Java发送邮件必带超时时间配置[通俗易懂]在线上遇到了一个发送邮件的问题,记录一下。 我去DB查了一下近期的邮件发送情况,表示:“看着都挺正常的,线上没有异常的情况。可能邮件在redis里边堆积了,还没消费” 这样做有什么好处?把Redis当做一个消息队列,把请求全部扔到Redis上,这能削峰。机器A/B/C的线程会在…

    2023-08-04
    81
  • 优化Python代码执行时间的技巧

    优化Python代码执行时间的技巧Python是一种高级的编程语言,具有简洁、易读、易学、易写的优点,因此受到了越来越多程序员的喜爱。但Python代码其实并不总是能够快速的执行,执行时间长是Python使用过程中常见的问题。在本篇文章中,我们将分享一些优化Python代码执行时间的技巧,以帮助您提高Python代码的运行效率。

    2024-02-25
    59
  • 与python版本对应关系(python几个版本的区别)

    与python版本对应关系(python几个版本的区别)py2.5的话

    2023-11-20
    59
  • 使用Python保存.py文件的方法

    使用Python保存.py文件的方法Python代码通过保存在.py文件中来进行管理和运行,而Python的解释器可以读取这些文件并进行解释执行。因此,我们需要将编写的Python代码保存到.py文件中以供后续使用。Python文件的保存过程可以分为两个步骤:首先将代码编辑器中的Python代码保存为.py文件,然后在需要运行代码的时候使用Python解释器来执行该文件。

    2024-02-10
    47
  • IDEA永久激活方法[通俗易懂]

    IDEA永久激活方法[通俗易懂]Idea版本:2018.1.5准备工作:  1、安装,从官网下载安装,点击进去之后,进行选择需要的版本    2、下载激活成功教程包:    链接:https://pan.baidu.com/s/1lCb0MGetP1_3XlI2-gWMbQ    提取码:hfqm  3、激活码:BIG3CLIK6F-eyJsaWNlbnNlSWQiOiJCSUczQ0xJ…

    2023-03-23
    189
  • 读者来信 | 刚搭完HBase集群,Phoenix一启动,HBase就全崩了,是什么原因?(已解决)「建议收藏」

    读者来信 | 刚搭完HBase集群,Phoenix一启动,HBase就全崩了,是什么原因?(已解决)「建议收藏」前言: 之前有朋友加好友与我探讨一些问题,我觉得这些问题倒挺有价值的;于是就想在本公众号开设一个问答专栏,方便技术交流与分享,专栏名就定为: 《读者来信》 。如遇到本人能力有限难以解决的问题,我将转发

    2023-02-14
    101

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注