第5章 理解RemoteViews

用在通知栏和桌面小部件。跨进程显示界面。

RemoteViews中真正操作View的方法apply和reapply,前者会加载布局并更新界面,后者则只更新界面。

通知栏:

如果使用自定义Notification的话,需要用到RemoteViews来加载布局文件改变通知样式。

remoteView更新View的方式:

因为远程进程汇总显示无法直接findViewById,所以采用了一系列set方法来完成。

  1. remoteViews.setTextViewText(R.id.msg,"chapter_5");

给里面的控件加单击事件,要使用PendingIntent并通过setOnClickPendingIntent方法来实现。

桌面小部件:

用于实现桌面小部件的类AppWidgetProvider,继承自BroadcastReceiver。

配置步骤:定义小部件的界面res/layout/widget.xml;

res/xml新建xml定义配置信息,initialLayout就是小工具使用的初始化布局;

定义小部件的实现类,需继承AppWidgetProvider,并复写重要方法;

在manifest.xml声明小部件,本质上是一个广播组件;

重要回调:onEnable,窗口第一次添加到桌面;

onUpdate,小部件被添加时或更新调用;

onDeleted,每删除一次部件调用;

onDisabled,最后一个该类型的桌面小部件删除时调用;

onReceive,根据不同的Action来调用上述方法;

PendingIntent:

PendingIntent是将来某个时刻要发生的Intent,Intent是立刻发生。

支持:启动Activity、Service、BroadcastReciver;

  1. getAvtivity(Context context,int requestCode,Intent intent,int flags);
  2. getService(Context context,int requestCode,Intent intent,int flags);
  3. getBroadcast(Context context,int requestCode,Intent intent,int flags);

相当于startActivty,startService,sendBroadcast。

PendingIntent的匹配规则:内部Intent相同且requestCode相同;

Intent匹配规则:两个Intent的ComponentName和intent-filter相同;

Flag:

FLAG_NO_CREATE,基本不使用;

FLAG_ONE_SHOT,以第一个为准,后续的会全部和第一条保持一致,任意一条被触发,其他的都cancel;

FLAG_CANCEL_CURRENT,前面的相同的PendingIntent都会被cancel,只有最新的可用;

FLAG_UDPATE_CURRENT,前面的PendingIntent都会被更新(它们Intent中的extras都会被更新)

来自为知笔记(Wiz)

时间: 2024-10-16 18:38:33

第5章 理解RemoteViews的相关文章

HTML与CSS入门——第三章 理解HTML和XHTML的关系

知识点: 1.以HTML创建一个简单网页的方法 2.包含每个网页必须有的所有HTML标签的方法 3.用段落和换行组织页面的方法 4.用标题组织内容的方法 5.HTML.XML.XHTML和HTML5之间的差别 3.1 从一个简单的网页开始: 作者建议:从简单的文本编辑器开始学习,之后再转向可视化工具. 扩展名支持:.htm以及.html 如.jsp,.asp,.php之类的文件类型使用超出了HTML范围的服务器端技术,需要专门的服务端支持.比如Apache服务器 3.2 每个XHMTL网页必须有

PostgreSQL Replication之第一章 理解复制概念(2)

1.2不同类型的复制 现在,您已经完全地理解了物理和理论的局限性,可以开始学习不同类型的复制了. 1.2.1 同步和异步复制 我们可以做的第一个区分是同步复制和异步复制的区别. 这是什么意思呢?假设我们有两台服务器,希望从一台服务器(the master)复制数据到第二台服务器(the slave).下图说明了同步和异步复制的概念: 我们可以使用一个简单的事务如下所示: BEGIN: INSERT INTO foo VALUES ('bar'); COMMIT; 在异步复制的情况下,事务被提交到

PostgreSQL Replication之第二章 理解PostgreSQL的事务日志(4)

2.4 调整检查点和XLOG 目前为止,这一章已经提供深入洞察PostgreSQL如何写入数据,一般来说,XLOG是用来干什么的.考虑到这方面的知识,我们现在可以继续并学习我们能做些什么来使我们的数据库在复制和单台服务器运行的两种情况更加有效的工作. 2.4.1 理解检查点 在本章中,我们已经看到在数据可能到其它地方之前,它已经被写入到了XLOG.问题是,如果XLOG从未被删除,显然,在没有填满磁盘的同一时间,我们不会永远写到XLOG中. 要解决这个问题,XLOG必须在某一时刻被删除.这个过程就

PostgreSQL Replication之第二章 理解PostgreSQL的事务日志(1)

在前面的章节中,我们已经理解了各种复制概念.这不仅仅是一个为了接下来将要介绍的东西而增强您的意识的理论概述,还将为您介绍大体的主题. 在本章,我们将更加接近实际的解决方案,并了解PostgreSQL内部是如何工作的,复制意味着什么.我们将看到所谓的事务日志(XLOG)做什么,以及它是如何运作的.XLOG在PostgreSQL复制机制中起着主要作用.理解这部分是如何工作的是必要的. 2.1 PostgreSQL如何写入数据 PostgreSQL的复制完全是关于写入数据的.因此,PostgreSQL

PostgreSQL Replication之第一章 理解复制概念(1)

PostgreSQL Replication系列翻译自PostgreSQL Replication一书 在本章中,将会介绍不同的复制概念,您会了解哪些类型的复制对哪一种实用场景是最合适的. 在本章的最后,您将能够判断某个概念在各种情况下是否是可行的. 我们在本章将介绍以下主题: • CAP理论 •复制的物理限制 •为什么延迟有影响 •同步和异步复制 •拆分和复制 在我们使用PostgreSQL实际工作之前,我们将引导您完成一些非常基本的与复制相关想法和事实. 1.1 CAP理论和物理限制 您可能

PostgreSQL Replication之第二章 理解PostgreSQL的事务日志(3)

2.3 理解一致性和数据丢失 挖掘PostgreSQL事务日志而不考虑一致性是不可能的.在本章的第一部分,我们已经大体上解释了事务日志的基本思想.您已经知道,无需事先的日志改变的能力,使数据处于一种好的形状是很难甚至是不可能的. 到现在为止,我们大多都在讨论崩溃的问题.因为数据文件中的条目的损坏而丢失文件是绝对不好的.但是,崩溃不是您要关心的唯一问题.另外两个重要的主题是: • 性能 • 数据丢失 虽然这可能是一个重要的主题的明显的选择,我们有这样的感觉,这两个主题都不好理解,是受尊敬的,并因此

PostgreSQL Replication之第一章 理解复制概念(3)

1.3 使用分片和数据分配 本节您将了解基本可扩展性技术,例如数据库分片.分片被广泛应用于高端系统并提供一个简单而且可靠的扩展设置方式来向外扩展.近年来,分片已经成为一种扩大专业系统规模的标准方式. 1.3.1 理解分片的目的 如果您的数据量增长超过一台机器的处理能力将会发生什么事情?如果您要运行这么多的事务,一台服务器根本跟不上怎么办?我们假设您有百万级的用户,上万用户想在同一时间执行特定的任务. 显然,某些时候,您再也不能通过购买能够处理无限大的负载的足够大的服务器来解决问题.显然在单个服务

PostgreSQL Replication之第三章 理解即时恢复(1)

到现在为止,您已经掌握了一定的理论.因为生活不仅由理论组成(它可能同样重要),是时候深入实际的工作了. 本章的目标是让您明白如何恢复数据到一个给定的时间点.当您的系统崩溃或者有人意外地删除了一个表,不重放整个事务日志,而是重放 其中的一小部分,这是非常重要的.即时恢复(PITR,Point-In-Time-Recovery)将是做这种部分事务日志重放的工具. 在本章中,您将学到关于即时恢复(PITR)的所有您需要知道的信息,并且会有实际的例子来引导您.因此,我们将应用所有您已经在第二章所学习的概

PostgreSQL Replication之第二章 理解PostgreSQL的事务日志(5)

2.5 XLOG的内部结构 我们将使用事务贯穿本书,并让您在技术层面上更深地洞察事情是如果工作的,我们已经增加了这部分专门处理XLOG的内部工作机制.我们会尽量避免前往下降到C级,因为这将超出本书的范围,但我们会为您提供希望足够深的见解. 2.5.1 理解XLOG记录 对XLOG所做的更改是基于记录的.这意味着什么?让我们假设您在给一个表添加一行数据: test=# INSERT INTO t_test VALUES (1, 'hans'); INSERT 0 1 在这个例子中,我们正在插入一个