`
407827531
  • 浏览: 1070164 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Android传值

阅读更多

推荐安卓开发神器(里面有各种UI特效和android代码库实例)

当一个application 中有多个 Activity的时候,那么每个Activity之前的传值就是一个问题了。所以这里介绍一下相关的方法。

在Android平台传值,主要使用两种方法一个事 PendingIntent  另一个就是广播了

按照大类,我把相关的类进行了划分

1.实体类   Intent  、Context 、  BroadcastReceiver
2.方法类   PendingIntent   Context.sendBroadcast

传递的方法 也就是方法类中的两种


A Intent 字面意思是意图,其实他的效果和字面意思差不多,高焕堂的很多书中都有详细的介绍。

    他就像一个快递员,而且是个无所不能的快递员,什么都能送,只要你能把信息加到他上面去

    详细的使用方法可以再SDK中找到,如果想要添加你想要的内容 可以用 Intent.set**系列方法。

B Context 这个翻译成环境更好一些

    顾名思义 他就是获取我们当前的环境状态, 比如说我想知道现在用户使用的什么语言,处于什么状态,航班、静音。用户有没有接打电话

    等等,就像我们获取系统时间一样。Context也我们设置了一个容器让我们来获取系统的状况。

    因为这个系统状况很重要,有的时候就是以系统状态为依据,所以Intent 好多方法都要加入这个 都需要 Intent.context

C   BroadcastReceiver  是专门用来接收广播的类

     所以他有一个OnReceive()的方法 而具体的接受 我在下面详述。




α PendingIntent  这个方法就是直接传递 Intent
    好传出了,怎么才能保证能接收到呢?因为Intent是一个很强大的快递员,他能记录货物需要达到的地点,所以PendingIntent 干吗,他相当于一个Intent的工作场所,他只负责吧Intent送出去
   而Intent 去那里,直接告诉 Intent就可以了
   通过下面这条语句就可以达到显影的效果  intent.setClass(Activity.this//指代Activity, Report.class//指代目标类);

   接收端怎么获取消息呢,这个也简单。因为Intent 已经按照他自己的地址来到了所处的地方,我们直接实例化就行了。
   当然这是在简单的情况下,就是说如果这个公司只有一个货物所以我们之需要一个快递员就可以,接收方目前只有这个货物需要接收,那快递员一到他接收方只要确认一下就知道他来干嘛了。

   但多数情况下,两家公司的业务非常繁忙,所以可能有多个快递员,多个货物,同一个部门可能有多个。那么怎么来做呢。就需要加限定规则
   (1)首先是 在Intent中加限定,可以设定一个 Permission String  就像暗号一样,如果暗号对了肯定错不了 (这个在广播方法中很重要)
   (2)另一个就是在实例化的时候确定好实例的是那个一个 参数

    具体的请大家参看SDK

β 使用广播来进行数据传递
    如果直接使用PendingIntent 是有目的的传送, 那广播可真算是漫无目的的传送信息了

    其实Broadcast 中传递的内容也是Intent ,但可以传递的范围可是远的多。
    而且系统的很多其他程序也在发送广播,比如说手机的状态,还要说一下航班状态,如果出于航班状态,那么系统就会自动发送广播,而我们只要去接收就好,这样我们就能知道哦,系统现在时在广播状态。

      而在Widget 接受方法使用广播,一方面是因为AppWidget 本来就是继承BroadcastReciever 所以比较纯,不会出问题。另外,这个是我的个人判断,因为Widget还是和普通的app不同,我估计如果直接给 Widget传送 Intent 又会受到限制,就像 handler的一样,当然这是我的猜测,但是感觉还是用 广播靠谱

      广播的载体是Intent,但是他们的标号则是Action。系统内定了很多Action。

      当然我们也可以自己定义Intent 。 之需要 Intent("你自己定义的一个字符串")

      接收方麻烦一些 需要 注册
registerReceiver(intent, commandFilter);
      第二个参数是Intent的过滤,而且不能为空。

      如果是自己定义的Action 那还需要

String action = intent.getAction();

if (action.equals("自定定义的Action")) { 相应的Intent的实例化 必须在这里进行
}


Σ Widget 使用 PendingIntent 是因为 没有其他的方法了。说实话 AppWidget 就给我们一个 可以使用RemoteViews 的方法,别的都不能用。所以就顺势写了一个SetPeningIntent 当然这个方法也有很多固定的用法 ,启动服务,启动活动 ,发送广播,基本上该有的他都有了 。



3.最后再来说一下 Action  其实一个字符串但是这个字符串 因为很长所以基本上很少有人和其明明重合
   他们就是来定义一些状态,还是航空状态,他的的Action就是
ACTION_AIRPLANE_MODE_CHANGED

   具体的什么在Intent 搜索一下都能找到

 

分享到:
评论

相关推荐

    android 传值回调

    标题"android 传值回调"主要涉及的是在Android应用程序的不同Activity之间传递数据以及使用回调方法来处理这些数据的方式。本篇文章将详细探讨Android页面传值的各种策略和技术。 首先,最基本的页面传值方式是使用...

    Android 传值操作源代码

    Android 传值操作 源码 从一个Activity跳转到另外一个Activity的同时,有数据的传递

    Android Activity间传值

    "Android Activity间传值"是一个核心知识点,它涉及到Intent、 Extras、Parcelable接口、Serializable接口等多种方式,以及如何在返回Activity时回显之前的数据。现在,我们将深入探讨这些概念。 首先,Intent是...

    android 传值

    本篇文章将深入探讨如何在Android中实现“传值”,主要关注Intent、BroadcastReceiver以及EventBus这三种常见的方式,同时也会提及文件存储作为辅助手段。 首先,我们来详细了解一下**Intent传值**。Intent是...

    android传值总结

    本篇文章将全面总结Android中的传值操作,包括父类到子类、子类到父类的传递方式。 首先,我们来看如何在多个Activity之间进行数据传递。通常,我们使用Intent作为数据的载体。Intent不仅仅用于启动一个新的...

    Android与JS互调,Android与JS相互传值,webview展示

    1.本文采用的是android调用assest中的本地.html文件,webview展示(加载网络的html效果是一样的,把...4.包含本地.html文件加载,Android端传值到到html https://blog.csdn.net/qq_31939617/article/details/80116906

    android与H5交互传参

    本文将深入探讨Android与H5之间的参数传递,包括H5调用Android的方法以及Android调用JavaScript的方法。 首先,让我们关注H5调用Android的方法。Android提供了WebView组件,它允许在应用程序中嵌入一个浏览器内核,...

    Android-Service与Activity传值

    在Android应用开发中,`Service`和`Activity`是两个重要的组件。`Service`用于在后台执行长时间运行的任务,而`Activity`则负责用户界面交互。在某些场景下,我们可能需要在`Service`和`Activity`之间传递数据,比如...

    Android Handler传值的demo

    本示例“Android Handler传值的demo”将帮助我们深入理解这一机制。 `Handler`是一个Android中的核心组件,它的主要作用是处理来自其他线程的消息,通常是在主线程中。它通过发送`Message`对象来执行特定的操作或...

    android嵌套HTML的程序,相互间传值

    在这种情况下,"android嵌套HTML的程序,相互间传值"是一个重要的技术点,它涉及到如何在Android应用和内嵌的H5页面之间有效地传递数据。以下是对这个主题的详细讲解: 一、Android壳嵌套HTML界面 1. Webview组件...

    android页面跳转传值

    本篇将深入探讨"android页面跳转传值"这个主题,重点关注Intent的使用以及如何通过Bundle来传递数据。 1. **Intent的基本概念** Intent是Android中的一个类,它表示应用程序想要完成的一个动作(如打开网页、发送...

    Android Activity之间传值

    本篇将详细讲解如何在Android Studio 3.1环境下,通过Intent实现Activity间的简单传值。 一、Intent的使用 Intent是Android系统中用于启动另一个组件(如Activity、Service)的一种消息对象。在Activity间传递数据...

    Android Intent多种传值方式

    本文将深入探讨Android Intent的多种传值方式。 1. **基本类型传值** - 使用`putExtra()`方法:Intent提供了`putExtra(String name, boolean value)`、`putExtra(String name, char value)`等方法,可以用来传递...

    Android页面跳转传值

    本篇文章将详细解析Android页面跳转和传值的过程,以及如何有效地利用`Intent`。 一、页面跳转 在Android中,页面跳转主要通过`Intent`对象实现。`Intent`是用来表示应用中一个操作的意图,它可以用于启动一个新的...

    Android Service传值

    在给定的“Android Service传值”主题中,我们将探讨如何利用`BroadcastReceiver`作为中间桥梁,实现`Service`到`Activity`的数据传递。 `BroadcastReceiver` 是Android系统中的一个关键组件,它能够监听并响应系统...

    android 广播,界面传值示例

    在Android开发中,广播(Broadcast)和界面传值是两个重要的概念。广播是Android系统中的一种全局通知机制,用于在应用程序之间传递消息。界面传值则涉及到Activity、Fragment或者Service之间的数据交换。在这个...

    Android 广播传值

    "Android 广播传值"是指通过Android系统的BroadcastReceiver机制,实现不同组件或进程之间的数据交换。BroadcastReceiver是Android四大组件之一,它能够监听并接收系统或应用程序发送的广播消息,包括字符串、整型等...

    android基础 - 页面传值

    总结,Android中的页面传值涵盖了多种方法,开发者应根据实际需求选择最适合的方式来传递数据。理解并熟练运用这些技术对于构建健壮的Android应用至关重要。在实践中,应始终考虑性能、可维护性和代码的清晰度。

    android Application全局传值替代Intent

    在这种情况下,我们可以考虑使用`Application`类来实现全局传值,以替代Intent传值。 Android的`Application`类是每个Android应用的顶级组件,它是所有Activity、Service等的父类。开发者可以创建自定义的`...

    Android_activity向fragment传值 对应45

    下面我们将详细探讨“Android_activity向fragment传值”的相关知识点。 首先,我们可以通过Intent来传递基本类型的数据。如果在Activity中有一个Fragment实例,可以直接通过setArguments(Bundle args)方法将数据...

Global site tag (gtag.js) - Google Analytics