- 浏览: 1068342 次
- 性别:
- 来自: 南昌
文章分类
- 全部博客 (276)
- 生活 (1)
- 代码之美 (22)
- Media (7)
- Android Widget (3)
- Android Intent (1)
- Android Activity (4)
- UI event handle--UI事件处理机制 (2)
- Java基础知识 (12)
- android Databases (5)
- Android 系统知识 (70)
- 平常遇到的问题与解决方法 (38)
- Android TextView/EditView (2)
- Thinking Java (1)
- android webkit (6)
- JSON (1)
- XML (4)
- HTTP (1)
- Google Weather API (1)
- android 2.3 NFC (10)
- android app (20)
- android framework (7)
- C++ (2)
- android System (5)
- Pthread (1)
- Wifi (8)
- Unix/Linux C (8)
- Android 4.0 (1)
- Mail (1)
- Smack 源码学习 (4)
- iOS (4)
- Android (1)
- git (1)
- Gallery3d (2)
- React-Natice (1)
最新评论
-
dd18349182956:
你是用的smack哪个版本?我用的smack4.1.3和sma ...
关于socket长连接的心跳包 -
xukaiyin:
全英文
getApplicationContext()与this,getBaseContext() -
裂风矢:
...
<category android:name="android.intent.category.DEFAULT" /> 惹的祸 -
xanthodont:
mark一下
XMPP——Smack -
Evilover3:
mark一下,学习了
XMPP——Smack
以前在学习AlarmManager里面会遇到PendingIntent,我就很迷惑,PendingIntent和Intent的区别是什么呢?我在网上搜索了,但看了许多人的解释还是不理解,今天有看到了PendingIntent的另一种用法,所以我重新理解一遍PendingIntent.不知道是否理解正确,只是把自己的理解写出来,大家一起共同探讨。相信大家都知道Intent是你的意图,比如你想启动一个Activity,就会通过Intent来描述启动这个Activity的某些特点,让系统找到这个Activity来启动,而不是启动别的Activity.StartActivity(intent)就会立即启动这个Activity.而PendingIntent呢?Penging中文意思就是:待定,将来发生或来临。PendingIntent的就的意思就是不是像Intent那样立即发生,而是在合适的时候才会去触发对应的Intent.有人说这个intent不是你的ap来触发而是交给别的ap来触发。你可以看以下的code来理解:
这是在PackageInstaller的代码
mPm.freeStorage(size, pi.getIntentSender());
以下是在PackageManagerService的:
opFinishedIntent.send((retCode >= 0) ? 1 : 0);在PackageInstaller定义的PendingIntent,在PackageManagerService里面来触发。
不是很懂你的问题哦!
朋友,我已经增加了一点点注解,希望对你有帮助。有时候,有些东西是"只可意会不可言传滴"
这是在PackageInstaller的代码
private class ClearCacheReceiver extends BroadcastReceiver { public static final String INTENT_CLEAR_CACHE = "com.android.packageinstaller.CLEAR_CACHE"; @Override public void onReceive(Context context, Intent intent) { Message msg = mHandler.obtainMessage(FREE_SPACE); msg.arg1 = (getResultCode() ==1) ? SUCCEEDED : FAILED; mHandler.sendMessage(msg); } }
private void checkOutOfSpace(long size) { if(localLOGV) Log.i(TAG, "Checking for "+size+" number of bytes"); if (mClearCacheReceiver == null) { mClearCacheReceiver = new ClearCacheReceiver(); } registerReceiver(mClearCacheReceiver, new IntentFilter(ClearCacheReceiver.INTENT_CLEAR_CACHE)); PendingIntent pi = PendingIntent.getBroadcast(this, 0, new Intent(ClearCacheReceiver.INTENT_CLEAR_CACHE), 0); mPm.freeStorage(size, pi.getIntentSender()); }
mPm.freeStorage(size, pi.getIntentSender());
以下是在PackageManagerService的:
public void freeStorage(final long freeStorageSize, final PendingIntent opFinishedIntent) { mContext.enforceCallingOrSelfPermission( android.Manifest.permission.CLEAR_APP_CACHE, null); // Queue up an async operation since clearing cache may take a little while. mHandler.post(new Runnable() { public void run() { mHandler.removeCallbacks(this); int retCode = -1; if (mInstaller != null) { retCode = mInstaller.freeCache(freeStorageSize); if (retCode < 0) { Log.w(TAG, "Couldn't clear application caches"); } } if(opFinishedIntent != null) { try { // Callback via pending intent opFinishedIntent.send((retCode >= 0) ? 1 : 0); } catch (CanceledException e1) { Log.i(TAG, "Failed to send pending intent"); } } } }); }
opFinishedIntent.send((retCode >= 0) ? 1 : 0);在PackageInstaller定义的PendingIntent,在PackageManagerService里面来触发。
评论
4 楼
追求幸福
2011-07-06
h286271819 写道
怎么实现对第三方应用程序的缓存清理啊????
不是很懂你的问题哦!
3 楼
h286271819
2011-07-06
怎么实现对第三方应用程序的缓存清理啊????
2 楼
追求幸福
2010-11-09
rmn190 写道
下面没有啦?就这么点干巴巴的代码, 哇呀呀....
朋友,我已经增加了一点点注解,希望对你有帮助。有时候,有些东西是"只可意会不可言传滴"
1 楼
rmn190
2010-11-05
下面没有啦?就这么点干巴巴的代码, 哇呀呀....
发表评论
-
打印调用堆栈
2019-11-15 15:48 503平常我们遇到不清楚代码逻辑的,可以通过打印调用堆栈来理清楚,如 ... -
你知道Log.isLoggable
2018-11-23 14:15 974我们可以通过Log.isLoggable来动态开关log的输出 ... -
android:allowUndo
2018-04-25 16:51 795Android 在Android 23增加了UndoManag ... -
mipmap-xxx
2015-12-10 11:35 1119最近在看AOSP,发现mipmaps, 百度 了一下,发现有各 ... -
《Android.Programming.Pushing.the.Limits].Erik.Hellman》记录1
2015-10-29 10:56 589最近在看《Android.Programming.Pushin ... -
System.currentTimeMillis() uptimeMillis elapsedRealtime 区别
2015-10-28 20:02 1336转自http://blog.csdn.net/wutianyi ... -
GPS的开关设置
2015-09-29 18:36 2052//modify by hyxu 2015-9-30 to s ... -
DialogFragment
2015-09-25 13:56 1060public class YesNoDialog extend ... -
ANDROID L——RecyclerView,CardView导入和使用
2015-07-23 09:51 966转自http://blog.csdn.net/a3969019 ... -
IntentService 和ResultReceiver
2015-07-22 20:00 821转自[url] http://javatechig.com/a ... -
Android media媒体库分析之:分类别统计媒体文件大小
2015-07-21 20:07 558转自http://www.linuxidc.com/Linux ... -
java.lang.IllegalArgumentException: Service Intent must be explicit
2015-07-21 20:03 1314转自:http://www.2cto.com/kf/20150 ... -
Context 和Application Context
2015-02-11 15:14 890http://possiblemobile.com/2013/ ... -
ContentProviderOperation.Builder 中withValue和withValueBackReference的区别
2015-02-10 14:01 2209关于ContentProviderOperation.Buil ... -
AndroidManifest.xml的Service元素 android:process设置
2013-05-30 17:02 11499转自:http://galin.blog.sohu ... -
android中打包含有Activity以及资源文件的jar包在工程中调用
2013-05-28 15:00 1328转自:http://www.cnblogs.com/vaiya ... -
Android杂谈--内存泄露(1)--contentView缓存使用与ListView优化
2012-11-01 09:29 2847转自:http://www.cnblogs.com/louli ... -
Handler+ExecutorService(线程池)+MessageQueue模式+缓存模式
2012-10-31 14:32 1900转自:http://www.eoeandroid.com/th ... -
Animation
2012-10-30 13:41 1143转自:http://hi.baidu.com/wendaoer ... -
Android onTouchEvent和onInterceptTouchEvent
2012-10-24 15:05 1297ViewGroup里的onInterceptTouchEven ...
相关推荐
Intent可以理解为一种消息传递对象,用于在不同组件之间传递行为和数据,而PendingIntent则是Intent的一种封装,增加了权限和身份的概念。 Intent的主要功能是作为Android系统四大组件(Activity、Service、...
在Android开发中,Intent和PendingIntent是两个非常关键的概念,它们在应用程序的组件间通信中起着重要作用。Intent主要用于启动或传递数据给另一个组件,如Activity、Service或BroadcastReceiver,而PendingIntent...
当其他应用或系统组件需要执行与该Intent相关的行为时,它们可以通过PendingIntent来安全地访问我们的应用资源,而无需直接持有我们的应用上下文。 **二、PendingIntent的类型** PendingIntent主要分为以下三种类型...
PendingIntent的生命周期与Intent关联,Intent中的数据(如动作、数据、类别、额外数据)都会影响到PendingIntent。例如,当我们更新Notification的Intent时,如果使用了`FLAG_UPDATE_CURRENT`,那么先前的...
对于短信发送,PendingIntent常与BroadcastReceiver结合使用。在Android中,发送短信通常需要一个SMS权限,并且必须通过SmsManager类进行。你可以创建一个Intent,设置ACTION_SENDTO动作和电话号码数据,然后通过...
2. **意图(Intent)**:`PendingIntent`是基于Intent构建的,Intent定义了要执行的操作。当创建`PendingIntent`时,需要提供一个Intent实例,这个Intent包含了操作的目标(如ComponentName)、数据(Uri、Extras等)...
这种设计模式为应用提供了一种安全的方式来与其他组件交互,因为只有拥有PendingIntent的对象才能执行相关的Intent操作。 创建PendingIntent通常涉及以下几个步骤: 1. **创建Intent**:首先,你需要创建一个Intent...
3. **隐式Intent与Action、Data、Category** 隐式Intent通常用于启动未知组件,例如打开一个URL或者发送短信。你需要设置Intent的Action(例如ACTION_VIEW)、Data(Uri)和Category(例如CATEGORY_BROWSABLE): ...
"android开发范例大全第八章-与Intent接轨"涵盖了大量的实战案例,旨在帮助开发者深入理解和熟练运用Intent。以下是基于这个主题的详细知识点讲解: 1. **Intent的基本概念**:Intent是一种意图声明,表示一个动作...
与普通的Intent不同,PendingIntent不仅能够跨进程传递,而且能够赋予接收者一定的权限,使其能够在特定情况下执行某些操作,如启动Activity、发送Broadcast或执行Service。 **1. PendingIntent的定义和用途** ...
`PendingIntent`在Android中是一个非常重要的类,它可以理解为一个待执行的操作。在短信发送场景中,`PendingIntent`用于创建意图(Intent)并将其绑定到广播接收器,以便在特定事件(如短信发送成功或失败)发生时...
在闹钟应用中,`PendingIntent`会与一个BroadcastReceiver关联,当闹钟时间到达时,`BroadcastReceiver`会被唤醒并处理闹钟事件。 实现步骤如下: 1. **创建BroadcastReceiver**:首先,我们需要定义一个...
Intent1_Intent.zip中的源码应该包含了关于Intent的实例和使用方法,让我们一起深入探讨Intent在Android应用中的作用、类型、创建与传递、以及常见用法。 1. **Intent的作用** Intent的主要功能是启动一个活动...
Android Intent是Android系统中用于组件间通信的重要...理解并熟练掌握Intent的使用,对于编写高效、健壮的Android应用程序至关重要。通过阅读提供的"Intent使用代码"文件,可以更深入地了解Intent的具体实现和用法。
3. 异步Intent:通过使用PendingIntent,可以在后台服务或BroadcastReceiver中安全地执行Intent操作。 总之,Intent是Android应用程序组件间通信的桥梁,理解和熟练使用Intent对于Android开发者来说至关重要。通过...
接着,`PendingIntent`是Android系统的一个特殊意图(Intent),它封装了对另一个应用组件(如Activity、Service或BroadcastReceiver)的操作。`PendingIntent`的主要作用是保护应用程序的隐私,确保只有指定的应用...
本资料主要针对Intent的初级学习,涵盖了Intent的基本概念、创建方法以及常见用途,旨在帮助初学者理解和掌握这一关键知识点。 Intent主要分为显式Intent和隐式Intent两种类型。显式Intent通过指定Component(如...
在Android平台上,开发一款能够发送短信的应用程序是常见的需求,这涉及到对SmsManager和PendingIntent对象的理解和使用。这两个核心组件是实现Android系统中短信发送功能的关键。 首先,我们来详细了解一下...
2. **Intent构造与属性** - 创建Intent时,可以通过`Intent(Context packageContext, Class<?> cls)`构造显式Intent,或使用`Intent(action, uri)`创建隐式Intent。 - Intent有多个关键属性,如Action(操作)、...