intent传递对象

BroadcastReceiver(广播接收者)

孤人 提交于 2019-12-01 14:00:35
BroadcastReceiver是Android系统的核心组件。 广播是一种通信机制,广播的发送方可以发出广播,而另一端可以使用接收者接收该广播,接收到了以后决定相应的处理。 发广播可以使用sendBroadcast(Intent intent)方法实现,该方法是由ContextWrapper定义的。 在发送广播时,需要在Intent对象中配置Action属性,类似于生活中的广播的“频道号” 广播的接收需要自定义类继承BroadcastReceiver来实现,该自定义类可以是内部类。 注册广播接收者可以在程序代码中进行注册,调用registerReceiver(BroadcastReceiver recevier, IntentFilter filter)即可实现注册,注册时,参数IntentFilter中应该通过addAction()方法添加所有需要接收的广播中Intent携带的Action属性。 发送广播: Intent it = new Intent(); it.setAction("cn.tedu.player.intent.action.PREVIOUS"); sendBroadcast(it); 接收广播: private class InnerBroadcastReceiver extends BroadcastReceiver { @Override public

Notification使用详解之四:由后台服务向Activity发送进度信息

放肆的年华 提交于 2019-12-01 14:00:24
上次讲到了如何在Activity中监听后台服务的进度信息,实现的方式是让Activity与后台服务绑定,通过中间对象Binder的实例操作 后台服务。从效果上来讲,这种方式是可行的,不过这种实现有个缺点,那就是Activity的任务太重了,为了监听服务的状态,我们不得不绑定服务,然后 还需不断地定时的获取最新的进度,我们为何不换一下形式呢,让Service主动将进度发送给Activity,我们在Activity中只需拿到进度数 据,然后更新UI界面。这种新形式就像上次结尾提到的,就像两个男人同时喜欢一个女人,都通过自己的手段试图从那个女人那里获取爱情,现在我们要让那个女 人变为主动方,将爱情同时传递给那两个男人。 要实现以上方式,我们需要用到BroadcastReceiver,如果不太了解的朋友们,可以查阅相关资料补充一下。 关于整个流程的的截图,我在这里就不在贴出了,大家可以参看 Notification详解之三 的流程截图。布局文件也没有变化,所以这里也不在贴出。 我们主要看一下MainActivity、DownloadService、FileMgrActivity这几个组件的实现形式。 首先是MainActivity: [java] view plain copy package com.scott.notification; import android.app

显式intent和隐式intent

爷,独闯天下 提交于 2019-12-01 01:14:39
android当中显式intent和隐式intent的区别   定义:   Intent定义:Intent是一种在不同组件之间传递的请求消息,是应用程序发出的请求和意图。作为一个完整的消息传递机制,Intent不仅需要发送端,还需要接收端。   显式Intent定义:对于明确指出了目标组件名称的Intent,我们称之为显式Intent。   隐式Intent定义:对于没有明确指出目标组件名称的Intent,则称之为隐式Intent。 显示Intent直接指明了被启动的的类的定义  比如一个实例:  Mainactivity.java package com.example.root.longpra; import android.content.Intent; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.TextView; public class MainActivity extends ActionBarActivity { @Override protected

Android中BroadcastReceiver的使用

点点圈 提交于 2019-11-30 20:02:53
1、Android中广播分为静态注册和动态注册 2、下面是一个简单静态注册的例子 创建一个继承 BroadcastReceiver 的子类 public class DeviceBootReceiver extends BroadcastReceiver { private static final String TAG = DeviceBootReceiver.class.getName(); @Override public void onReceive(Context context, Intent intent) { Log.d(TAG, "开机了:" + intent.getAction()); } } 该类的功能用于接收手机开机的广播。 在 AndroidManifest.xml 中注册该组件 <receiver android:name=".DeviceBootReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> action 标签中的值用于匹配广播的类型,这里是开机广播。 这样当手机开机时,便会收到来自系统的消息。 同样,我们也可以监听应用安装,应用卸装,USB插拔等系统广播。只是

android service被系统回收的解决方法

家住魔仙堡 提交于 2019-11-30 11:34:12
android service被系统回收的解决方法 博客分类: Android开发 android service kill 自己的app的service总是容易被系统回收,搜罗了一下,基本上的解决思路有以下几种: 1.把service写成系统服务,将不会被回收(未实践): 在Manifest.xml文件中设置persistent属性为true,则可使该服务免受out-of-memory killer的影响。但是这种做法一定要谨慎,系统服务太多将严重影响系统的整体运行效率。 2.提高service的优先级(未实践): 设置android:priority="1000" Xml代码 <!-- 为了消去加上android:priority="1000"后出现的警告信息,可以设置android:exported属性,指示该服务是否能够被其他应用程序组件调用或跟它交互 --> < service android:name = "com.example.helloandroid.weatherforecast.service.UpdateWidgetService" android:exported = "false" > <!-- 为防止Service被系统回收,可以通过提高优先级解决,1000是最高优先级,数字越小,优先级越低 --> < intent-filter android

PendingIntent

与世无争的帅哥 提交于 2019-11-30 08:46:50
PendingIntent可以看作是对Intent的一个封装,但它不是立刻执行某个行为, 而是满足某些条件或触发某些事件后才执行指定的行为。 PendingIntent的获取 PendingIntent获取有三种方式:通过Activity,Service,BroadcastReceiver获取. 1. 你可以通过 getActivity(Context context, int requestCode, Intent intent, int flags) 系列方法从系统 取得一个用于启动一个Activity的PendingIntent对象. 2.可以通过 getService(Context context, int requestCode, Intent intent, int flags) 方法从系统取得一个 用于启动一个Service的PendingIntent对象. 3.可以通过 getBroadcast(Context context, int requestCode, Intent intent, int flags) 方法从系统取得一个用于向BroadcastReceiver的发送广播的PendingIntent对象. PendingIntent的参数说明 拿第三种方式,广播的形式说明下 PendingIntent sentIntent = PendingIntent

Android的Notification研究

喜夏-厌秋 提交于 2019-11-29 19:52:54
Android的Notification研究 最近在研究Android,遇到了一些Notification(通知)的问题: 1、Notification如何传递参数 2、Notification如何区别化 3、从Intent(意图)寻找Activity(活动)说起,Android的Activity栈。 =============================================================== 先从发送通知开始。 首先,在发送一个Notification前,我们需要准备好一个NotificationManager 获得途径: NotificationManager mNotificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE); this为Application或者Activity。 然后,定义好我们的Notification: 1、定义一个Notification具备的三个基本参数icon,title,以及when ? int icon=R.drawable.teller_call_1; long when = System.currentTimeMillis(); Notification notification

Android 应用之安全开发

前提是你 提交于 2019-11-29 19:11:04
原文链接:https://www.jianshu.com/p/3b22859b2677 大佬:“这个 APP 破解下,可以兼容客户已出货的产品” 我:“这个不合适吧” 大佬:“这个客户对我们很重要” 我:“好吧” 然后,就是通过反编译某 APP ,分析蓝牙交互协议,在新的 APP 中去兼容已出货的设备,达到无缝对接。 –这种场景在开发中还是比较经常碰到的。 一、引言 随着移动互联网向社会生活的各个领域渗透,APP 的使用越来越广泛。但 Android 系统由于其开源的属性,市场上针对开源代码定制的 ROM 参差不齐(特别中国区域),在系统层面的安全防范和易损性都不一样,Android 应用市场对 APP 的审核相对 iOS 来说也比较宽泛,市场上一些主流的 APP 虽然多少都做了一些安全防范,但由于大部分 APP 不涉及资金安全,所以对安全的重视程度不够;而且由于安全是门系统学科,绝大部分 APP 层的开发人员缺乏对 APP 安全意识及措施,导致被有心者有机可乘。 Android 开发是当前最火的话题之一,但很少开发者会讨论这个领域的安全问题,除了专业从业者,但移动应用安全隐患也给发展带来了挑战。 开发团队通常将精力集中在产品设计、功能实现、用户体验和系统效率等方面,而很少考虑安全问题; 与一切都是集中管理的 iOS 相比,Android 提供了一种开放的环境,在获得了灵活性

android onNewIntent

China☆狼群 提交于 2019-11-29 14:46:46
pendingIntent字面意义:等待的,未决定的Intent。   pendingIntent对象,使用方法类的静态方法 :       getActivity(Context, int, Intent, int) -------> 跳转到一个activity组件、      getBroadcast(Context, int, Intent, int)------>打开一个广播组件     getService(Context, int, Intent, int) --------> 打开一个服务组件。   分别对应着Intent的3个行为和参数有4个,比较重要的事第三个和第一个,其次是第四个和第二个。可以看到,要得到这个对象,必须传入一个Intent作为参数,必须有context作为参数。   pendingIntent是一种特殊的Intent。主要的区别在于Intent的执行立刻的,而pendingIntent的执行不是立刻的。pendingIntent执行的操作实质上是参数传进来的Intent的操作,但是使用pendingIntent的目的在于它所包含的Intent的操作的执行是需要满足某些条件的。 主要的使用的地方和例子:通知Notificatio的发送,短消息SmsManager的发送和警报器AlarmManager的执行等等。 intent英文意思是意图

Task和Activity相关

别等时光非礼了梦想. 提交于 2019-11-29 09:23:57
Task和Activity相关 这段时间在做一个项目,发现对Task和Activity掌握的还是不牢固。把相关知识整理在这里,方便查阅,有几个Flag没看明白啥意思,也没测试出来效果如何。。。 http://www.cnblogs.com/xirihanlin/archive/2010/06/03/1750811.html android:allowTaskReparenting 用来标记Activity能否从启动的Task移动到有着affinity的Task(当这个Task进入到前台时)——“true”,表示能移动,“false”,表示它必须呆在启动时呆在的那个Task里。 如果这个特性没有被设定,设定到<application>元素上的allowTaskReparenting特性的值会应用到Activity上。默认值为“false”。 一般来说,当Activity启动后,它就与启动它的Task关联,并且在那里耗尽它的整个生命周期。当当前的Task不再显示时,你可以使用这个特性来 强制Activity移动到有着affinity的Task中。典型用法是:把一个应用程序的Activity移到另一个应用程序的主Task中。 例如,如果e-mail中包含一个web页的链接,点击它就会启动一个Activity来显示这个页面。这个Activity是由Browser应用程序 定义的,但是