intent

[Android] PendingIntent详解

三世轮回 提交于 2019-12-01 16:44:44
Intent是一个意图,一个描述了想要启动一个Activity、Broadcast或是Service的意图。它主要持有的信息是它想要启动的组件(Activity、Broadcast或是Service),在开发操作中,需要通过 startActivity , startService 或sendBroadcast 方法来启动这个意图执行某些操作!! PendingIntent可以认为是对Intent的包装,实际上就是,供当前App或之外的其他App调用,而常见的是供外部App使用,外部App执行这个 PendingIntent时,间接地调用里面的Intent,即外部App延时执行PendingIntent中描述的Intent及其最终行为,PendingIntent主要持有的信息是它所包装的Intent和当前App Context,即使当前App已经不存在了,也能通过存在于PendingIntent里的 Context来执行Intent。当你把PendingIntent递交给别的程序进行处理时,PendingIntent仍然拥有PendingIntent原程序所拥有的权限,当你从系统取得一个PendingIntent时,一定要非常小心才行,比如,通常,如果Intent目的地是你自己的component(Activity/Service/BroadcastReceiver)的话

BroadcastReceiver—简介

旧时模样 提交于 2019-12-01 14:00:46
Android BroadcastReceiver 简介 在 Android 中使用 Activity, Service, Broadcast, BroadcastReceiver 活动(Activity) - 用于表现功能 服务(Service) - 相当于后台运行的 Activity 广播(Broadcast) - 用于发送广播 广播接收器(BroadcastReceiver) - 用于接收广播 Intent - 用于连接以上各个组件,并在其间传递消息 BroadcastReceiver 在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。而BroadcastReceiver是对发送出来的 Broadcast进行过滤接受并响应的一类组件。下面将详细的阐述 如何发送Broadcast和使用BroadcastReceiver过 滤接收的过程: 首先在需要发送信息的地方,把要发送的信息和用于过滤的信息(如Action、Category)装入一个Intent对象,然后通过调用 Context.sendBroadcast()、sendOrderBroadcast()或sendStickyBroadcast()方法,把 Intent对象以广播方式发送出去。 当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

Java的23种设计模式,详细讲解(二)

无人久伴 提交于 2019-12-01 12:22:31
本人免费整理了Java高级资料,涵盖了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo高并发分布式等教程,一共30G,需要自己领取。 传送门: https ://mp.weixin.qq.com/s/JzddfH-7yNudmkjT0IRL8Q 1. 责任链(Chain Of Responsibility) Intent 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链发送该请求,直到有一个对象处理它为止。 Class Diagram Handler:定义处理请求的接口,并且实现后继链(successor) Implementation public abstract class Handler { protected Handler successor; public Handler(Handler successor) { this.successor = successor; } protected abstract void handleRequest(Request request); } public class ConcreteHandler1 extends Handler { public ConcreteHandler1(Handler

Andriod经典之作(你必须知道 Service 用法)

。_饼干妹妹 提交于 2019-12-01 10:53:01
1、Service的种类 按运行地点分类: 应用本地服务(Local)远程服务(Remote) 应用本地服务(Local) 1) 区别:该服务依附在主进程上, 2) 优点:服务依附在主进程上而不是独立的进程,这样在一定程度上节约了资源,另外Local服务因为是在同一进程因此不需要IPC,也不需要AIDL。相应bindService会方便很多。 3) 缺点:主进程被Kill后,服务便会终止。 4) 应用:非常常见的应用如:HTC的音乐播放服务,天天动听音乐播放服务。 远程服务(Remote) 1) 区别:该服务是独立的进程, 2) 优点:服务为独立的进程,对应进程名格式为所在包名加上你指定的android:process字符串。由于是独立的进程,因此在Activity所在进程被Kill的时候,该服务依然在运行,不受其他进程影响,有利于为多个进程提供服务具有较高的灵活性。 3) 缺点:该服务是独立的进程,会占用一定资源,并且使用AIDL进行IPC稍微麻烦一点。 4) 应用:一些提供系统服务的Service,这种Service是常驻的。 其实remote服务还是很少见的,并且一般都是系统服务。 按运行类型分类: 前台服务后台服务 前台服务 1)会在通知一栏显示 ONGOING 的 Notification, 2)当服务被终止的时候,通知一栏的 Notification 也会消失

用Intent传递数据

社会主义新天地 提交于 2019-12-01 07:18:41
向下一个活动传递数据 Intent除了跳转活动,还可以在各个活动之间传递数据,我们来看一下。 启动活动时传递数据很简单,通过putExtra()方法,我们就可以将数据暂存在Intent中,putExtra()里要传入两个参数,第一个是键,用于第二个活动找到你,第二个则是存储的数据。 我们在MainActivity将之前的代码修改一下 button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String data="Hello!"; Intent intent=new Intent(MainActivity.this,SecondActivity.class); intent.putExtra("extra_data",data); startActivity(intent); } }); 1 2 3 4 5 6 7 8 9 那么第二个活动就得到了Intent里包含的数据,我们要将他取出来,通过getIntent来获取Intent,然后通过getStringExtra来获取传递的数据。(如果是int类型就是getIntExtra,以此类推) protected void onCreate(Bundle savedInstanceState) {

intent初步解析

一世执手 提交于 2019-12-01 07:18:40
使用Intent穿梭活动 显式Intent 一个Activity太单薄了,作为一个秃头 的程序猿,我们应该高级一点 我们再创建一个活动,命名为SecondActivity:File-New-Activity-Empty Activity 我们就获得了第二个活动 编辑layout目录下的activity-main.xml,替换成以下代码 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:id="@+id/button_1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Button1"> </Button> </LinearLayout> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <Button代表一个按钮

Activity与intent解析

橙三吉。 提交于 2019-12-01 07:18:40
1.先从看的见的入手(Toast与Menu) Toast是一种android中一种非常好的提醒方式,它可以将一些短小的信息通知给用户,一段时间后自动消失,不会占用任何的屏幕空间。 Menu则可以大幅度帮我们节省屏幕空间,将菜单收缩。 具体实现 我们先在res目录下新建menu文件夹:右击res目录-New-Directory 再再menu文件夹下新建main菜单文件:右击menu文件夹-New-Menu resource file 就像这样 在main.xml中添加如下代码: <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/add_item" android:title="Add"/> </menu> 1 2 3 4 5 6 7 8 <item是一个标签,用来创建一个具体的菜单项 id则是一个唯一的标识符,主要用来在全局中找到这个item title则是给其指定一个名称 然后我们在MainActivity里重写onCreateOptionsMenu(),重写方法通过Ctrl+O快捷键寻找 然后添加以下代码` @Override public boolean

Android原生PDF功能实现

匆匆过客 提交于 2019-12-01 05:23:36
1、背景 近期,公司希望实现安卓原生端的PDF功能,要求:高效、实用。 经过两天的调研、编码,实现了一个简单Demo,如上图所示。 关于安卓原生端的PDF功能实现,技术点还是很多的,为了咱们安卓开发的同学少走弯路,通过此文章,简单讲解下Demo的实现原理和主要技术点,并附上源码。 2、安卓PDF现状 目前,PDF功能仍然是安卓的一个短板,不像iOS,有官方强大的PDF Kit可供集成。 不过,安卓也有一些主流的方案,不过各有优缺点: 1、google doc 在线阅读,基于webview,国内需翻墙访问(不可行) 2、跳转设备中默认pdf app打开,前提需要手机安装了pdf 软件(可按需选择) 3、内置 android-pdfview,基于原生native, apk增加约15~20M(可行,不过安装包有点大) 4、内置 mupdf,基于原生native, 集成有点麻烦,增加约9M(可行,不过安装包稍有点大) 5、内置 pdf.js,功能丰富,apk增加5M(基于Webview,性能低,js实现,功能定制复杂) 6、使用x5内核,需要客户端完全使用x5内核(基于Webview,性能低,不能定制功能) 查阅官方资料,这些方案虽然能实现基本的PDF阅读功能,但是多数方案,集成过程较复杂,且性能低下,容易内存溢出造成App闪退。 3、方案选择 经过对各方案的反复比对,本次实现PDF