PendingIntent:
PendingIntent用于描述Intent及其最终的行为.PendingIntent不是像Intent那样立即发生,而是在合适的时候才会去触发对应的 Intent.有人说这个intent不是你的ap来触发而是交给别的ap来触发。我的理解:把一个Intent包起来,在适当的时候启用该Intent。
你可以通过getActivity(Context context, int requestCode, Intent intent, int flags)系列方法从系统取得一个用于启动一个Activity的PendingIntent对象,
例如:PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0,
new Intent(action), 0); //context是要起动activity的context
最后一个参数设置: 通过FLAG_UPDATE_CURRENT参数的话,可以让新的Intent会更新之前PendingIntent中的Intent对象数据,例如更新Intent中的Extras。另外,我们也可以在PendingIntent的原进程中调用PendingIntent的cancel ()把其从系统中移除掉。
可以通过getService(Context context, int requestCode, Intent intent, int flags)方法从系统取得一个用于启动一个Service的PendingIntent对象
可以通过getBroadcast(Context context, int requestCode, Intent intent, int flags)方法从系统取得一个用于向BroadcastReceiver的Intent广播的PendingIntent对象
返回的PendingIntent可以递交给别的应用程序,然后继续处理。这里的话你可以稍后才处理PendingIntent中描述的Intent及其最终行为。
RemoteViews:
RemoteViews类描述了一个View对象能够显示在其他进程中,可以融合从一个 layout资源文件实现布局。虽然该类在android.widget.RemoteViews而不是appWidget下面但在Android Widgets开发中会经常用到它,主要是可以跨进程调用(appWidget由一个服务宿主来统一运行的)。
用法:RemoteViews rv = new RemoteViews(context.getPackageName(), R.layout.main1);
rv.setTextViewText(R.id.TextView01, context.getResources().getString(R.string.load));
第一句为从远程获取了一个view对象(其实就是一个布局文件,第一个参数是布局文件所在的包名,然后第二个参数直接调用布局文件);把view(布局文件)调用过来后,实际上是想对它或他内部的控件做一些操作。例如上边第二行代码就是对view中的一个textView改变它的文本内容。
最后,我对RemoteViews的另一个方法印象比较深:RemoteViews.setOnClickPendingIntent(int viewId, PendingIntent pendingIntent); //意思是当单击RemoteViews中的viewId指向的控件时,就会执行pendingIntent中执行的Intent,
有关appWidget的布局:
我暂时先把它理解为一个固定的流程:
1 新建一个类,继承AppWidgetProvider,这个类就会显示在手机桌面的widget中。
2 重写里面的类,其中onReceive是AppWidgetProvider是它的父类BroadcastReciever给的。当该widiget发生变化时,调用onUpdate方法。还有好几个方法:onDelete,onEnabled,onDisabled
3 在menifest注册。因为继承了AppWidgetProvider后就是一个BroadcastReciever了,四大组件必须要注册。其中注册时需要定义meta-data元素:
<receiver android:name=".widgetProvider">
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/appwidget_provider"></meta-data>
<intent-filter>
<action android:name="com.quding.action.widget.click" />
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
</receiver>
meta-data元素指定了一个布局文件(该文件放在xml文件夹中),这个布局文件也不同于普通的布局文件:
<?xml version="1.0" encoding="UTF-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="60dp"
android:minHeight="30dp"
android:updatePeriodMillis="86400000" //在桌面的显示位置
android:initialLayout="@layout/main"> //这个指定了初始化的布局文件
</appwidget-provider>
有关AppWidgetManger类的使用:
// AppWidgetManger p = AppWidgetManager.getInstance(context);
/*
AppWidgetManger 类
bindAppWidgetId(int appWidgetId, ComponentName provider)
通过给定的ComponentName 绑定appWidgetId
getAppWidgetIds(ComponentName provider)
通过给定的ComponentName 获取AppWidgetId
getAppWidgetInfo(int appWidgetId)
通过AppWidgetId 获取 AppWidget 信息
getInstalledProviders()
返回一个List<AppWidgetProviderInfo>的信息
getInstance(Context context)
获取 AppWidgetManger 实例使用的上下文对象
updateAppWidget(int[] appWidgetIds, RemoteViews views)
通过appWidgetId 对传进来的 RemoteView 进行修改,并重新刷新AppWidget 组件
updateAppWidget(ComponentName provider, RemoteViews views)
通过 ComponentName 对传进来的 RemoeteView 进行修改,并重新刷新AppWidget 组件
updateAppWidget(int appWidgetId, RemoteViews views)
通过appWidgetId 对传进来的 RemoteView 进行修改,并重新刷新AppWidget 组件
* */
分享到:
相关推荐
在Android开发中,PendingIntent是一个非常重要的组件,它允许我们延迟执行某个操作或者将操作传递给其他应用。这个组件在很多场景下都有广泛的应用,比如通知、BroadcastReceiver、Service等。接下来,我们将深入...
在Android开发中,Intent和PendingIntent是两个非常重要的概念,它们在组件间的通信中起到关键作用。Intent可以理解为一种消息传递对象,用于在不同组件之间传递行为和数据,而PendingIntent则是Intent的一种封装,...
在Android开发中,`PendingIntent`是一个非常关键的组件,它允许一个应用组件(如Activity、Service或BroadcastReceiver)在另一个应用组件中执行一个动作,即使原来的组件已经被销毁或者当前进程不可用。...
builder.setContentIntent(PendingIntent.getActivity(context, 0, new Intent(context, MainActivity.class), 0)) .setPriority(NotificationCompat.PRIORITY_DEFAULT); Notification notification = builder....
在Android开发中,PendingIntent是一个非常关键且独特的组件,它为应用程序提供了跨进程通信的能力,使得一个应用可以请求系统在未来的某个时刻执行特定的操作。PendingIntent不仅涉及到了Android的权限模型,还涉及...
`PendingIntent`主要用于跨进程通信,例如在通知(Notification)中使用,当用户点击通知时,可以通过`PendingIntent`启动一个Activity或Service。 通知(Notification)是Android系统向用户展示应用在后台运行状态...
PendingIntent是Android系统中一个非常重要的组件,它允许应用程序在另一个上下文环境中执行特定操作。在Android应用开发中,PendingIntent常用于启动服务、发送广播、显示通知等场景,为应用提供了一种跨进程调用的...
Notification 和 PendingIntent 的使用 Notification 是 Android 系统中的一种机制,用于在系统状态栏中显示通知信息,通常用于提醒用户某些事件的发生。PendingIntent 则是 Android 中的一种机制,用于在特定的...
在Android开发中,`AlarmManager`和`PendingIntent`是两个非常重要的组件,它们用于实现应用程序在特定时间或触发特定事件时执行任务的功能。本文将深入探讨这两个组件的使用,并结合给定的“附件Home监听十分钟后...
PendingIntent是Android操作系统中的一个关键概念,它是Intent的一种延时或待处理版本。在Android应用开发中,PendingIntent主要用于在应用程序上下文之外执行操作,比如发送广播、启动服务或者启动新的Activity。它...
这个程序的核心在于使用`SmsManager`类和`PendingIntent`类。本文将详细介绍这两个关键类的使用方法以及如何结合它们来实现短信发送功能。 首先,`SmsManager`是Android SDK提供的一种系统服务,用于处理短信的发送...
在Android开发中, RemoteView 和 Notification 是两个非常重要的组件,它们允许开发者创建和管理系统通知,为用户提供关于应用后台活动的反馈。在这个场景中,我们将深入探讨如何利用RemoteView发送通知栏消息,...
**Android中的PendingIntent详解** PendingIntent是Android系统中一个非常重要的概念,它是Intent的一个特殊形式,主要用于在应用程序的组件之间传递意图(Intent),并确保这些意图在特定的时间或由特定的事件触发...
简单的总结了Intent和PendtingIntent的区别,经常与alermanger 和notificationmanager一起使用。
在Android开发中,`PendingIntent`是一个至关重要的组件,它允许其他应用或系统服务代表我们的应用执行操作。这篇博客的第二部分深入剖析了`PendingIntent`的源码,揭示了其工作原理和潜在问题。`PendingIntent`的...
`AlarmManager`和`PendingIntent`是Android系统提供的两个关键组件,用于实现这样的定时提醒功能。下面将详细阐述这两个组件的工作原理及其结合使用的方式。 `AlarmManager`是Android系统中的一个服务,它允许应用...
`PendingIntent` 是一个非常重要的工具,它可以将一个操作(如启动一个广播接收器、启动服务或者活动)延迟到未来某个时间执行。在实现多个闹钟控制时,我们可以利用 `PendingIntent` 的特性来实现这一目标。以下将...
在Android平台上,开发一款能够发送短信的应用程序是常见的需求,这涉及到对SmsManager和PendingIntent对象的理解和使用。这两个核心组件是实现Android系统中短信发送功能的关键。 首先,我们来详细了解一下...
这就涉及到`PendingIntent`和`AlarmManager`两个关键组件。本文将深入探讨如何利用这两个组件来实现一个可定时响起的闹钟功能。 首先,`AlarmManager`是Android系统中的一个服务,用于安排在未来某一时刻启动或重复...