Intent的使用

Intent存在以下几个属性:Component,Action,Category,Data,Type,Extra,Flag七个属性,其中Component属性用来指定需要启动的目标组件,Extra属性用于携带需要交换的数据。


1.      Intent的Component属性


Component是用来指定启动目标组件的属性,标准的启动代码如下:

ComponentName comp = new ComponentName(firstActivity.this,secondActivity.class);

Intent intent = new Intent();

Intent. setComponent(comp);

startActivity(intent);

以上代码用来标准的创建ComponentName对象,进而调用Intent对象的setComponent()函数来为Intent设定相应的componentName,最后调用startAcitvity函数启动一个新的Activity。

实际上,当需要为Intent设定Component属性的时候,Intent已经为我们提供了一个简单的构造器,使用方法如下(我们经常使用的方式):

Intent intent = new Intent(firstActivity.this,senondActivity.class);

值得一提的是,在secondActivity组件中,可以使用getIntent()方法取得调用次组件的Intent对象,进而,getXXX方法在这里就可以各种使用了


2.      Intent 的Action与Category属性

Action和Category属性都是普通的字符串,其中Action代表了抽象出来的“动作”,Category属性用来和Action属性配合使用,表达出要启动某组件的意图。

具有<intent-filter…/>标签的Activity均有可能会被启动。

比如:

Public final staticString SOME_ACTION = “org.someaction.SOME_ACTION”

// 这是一个字符转,随便设定,但是一般都具有一些抽象的语义。

在这个Activity种的某个按钮的onClick()方法中加入:

Intent intent = newIntent();

Intent.setAction(thisActivity.SOME_ACTION);

startActivity(intent);

这样的代码并没有具体指出要启动哪个Activity,这样就脱离了“硬编码”,但是具体要启动哪个Activity呢,这将取决于Activity配置文件中的<intent-filter…/>标签。

<intent-filter…/>是AndroidManifest.xml文件中<activity…/>元素的子元素,需要做的,就是给你实际需要相应这个意图的Activity添加<intent-filter…/>标签,在<intent-filter…/>下,存在着三种标签:1.<action…/>2.<category…/>3.<data…/>,其中指定android:name属性之后,这个activity便具有了相应上面意图的属性了。

对于上面的意图,则添加这样的代码(当然要在<intent-filter…/>标签下):

 <action android:name = “org.someaction.SOME_ACTION”/>

需要一提的是:一个Intent对象最多只能包含一个Activity属性,程序调用setAction(Stringstr)来设定Action的属性值;而一个Activity可以有多个Category属性,程序可以调用addCategory(String str)来添加Category属性。当程序创建Intent的时候,创建的Intent属性自动启动属性值为Intent.CATEGORY_DEFAULT常量,其值为“android.intent.category.DEFAULT”,所以,在配置某个Activity属性的时候<categoryandroid:name = “andrid.intent.category.DEFAULT ”>是可以添加到配置文件当中的。

实际上Android内部提供了大量的标准的Action和Category常量。

总结如下:

Action常量

对应的android:name 设定

简单说明

ACTION_MAIN

Android.intent.action.MAIN

应用程序入口

ACTION_VIEW

Android.intent.action.VIEW

显示指定数据

ACTION_ATTACH_DATA

Android.intent.action.ATTACH_DATA

指定某模块数据被附加的地方

ACTION_EDIT

Android.intent.action.EDIT

编辑指定数据

ACTION_PICK

Android.intent.action.PICK

从列表中选择某项并返回所选数据

ACTION_CHOOSER

Android.intent.action.CHOOSER

显示一个Activity选择器

ACTION_GET_CONTENT

Android.intent.action.GET_CONTENT

让用户选择数据,并返回所选

ACTION_DIAL

Android.intent.action.DIAL

显示拨号面板

ACTION_SEND

Android.intent.action.SEND

直接发送数据

ACTION_SENDTO

Android.intent.action.SENDTO

直接发送消息

ACTION_ANSWER

Android.intent.action.ANSWER

应答电话

ACTION_INSERT

Android.intent.action.INSERT

插入数据

ACTION_DELETE

Android.intent.action.DELETE

删除数据

ACTION_RUN

Android.intent.action.RUN

运行数据

ACTION_SYNC

Android.intent.action.SYNC

执行数据同步

ACTION_PICK_ACTIVITY

Android.intent.action.PICK_ACTIVITY

用于选择activity

ACTION_SEARCH

Android.intent.action.SEARCH

执行搜索

ACTION_WEB_SEARCH

Android.intent.action. WEB_SEARCH

直径web搜索

ACTION_ FACTORY_TEST

Android.intent.action.FACTORY_TEST

工厂测试入口点

这里仅仅摘录一些,如果想了解全部的ACTION,可以直接查看Android的标准API中有关Intent的说明部分。


3.      Intent中的Data和Type属性

采用几个例子来说明Data的用法:

在一个button的OnClick()方法中添加下面代码:

String data = http://3g.renren.com;

Uri uri =Uri.parse(data);

Intent.setAction(Intent.ACTION_VIEW);

Intent.setData(uri);

startActivity(intent);

此方法中将会使得按钮启动人人网。

当然一下代码是简便的写法:

Uri myUri = Uri.parse("http://3g.renren.com");

Intent intent = new Intent(Intent.ACTION_VIEW,myUri);

startActivity(intent);

上面的为其更详细的设定方法。


4.      Intent的Extra属性

Intent属性通常用来用于在多个Activity之间进行数据交换,Intent的Extra属性值应该是一个Bundle对象,他可以输入多个key-value对,这样就可以通过Intent在不同的Activity之间进行相应的数据交换了。

Intent提供的方法有如下几个:

putExtra(Bundledata)   getExtras()

putXXX(Stringkey XXX data)   getXXX(String key)

putSerializable(Stringkey, Serializable data) 对应的有

getSerializable(Stringkey, Serializable data)

在课件中已经给出了添加键值对的相关代码,这里就不在重复了。

 

总结:

         Android应用总是要借助Intent来实现需要启动的某个组件,Intent就是这种“启动意图”的封装形式,这种意图并没有和任何程序组件耦合,通过这种方式即可以很好的提供了程序的可扩展性和可维护性,其中<intent-filter/>的配置是程序组件最为重要的标签,最好借助Eclipse进行相应标签的添加,因为一些空格之类的小错误常常导致一些异常,希望各位童鞋在使用时引起重视。




以下是对提供的参考资料的总结,按照要求结构化多个要点分条输出: 4G/5G无线网络优化与网规案例分析: NSA站点下终端掉4G问题:部分用户反馈NSA终端频繁掉4G,主要因终端主动发起SCGfail导致。分析显示,在信号较好的环境下,终端可能因节能、过热保护等原因主动释放连接。解决方案建议终端侧进行分析处理,尝试关闭节电开关等。 RSSI算法识别天馈遮挡:通过计算RSSI平均值及差值识别天馈遮挡,差值大于3dB则认定有遮挡。不同设备分组规则不同,如64T和32T。此方法可有效帮助现场人员识别因环境变化引起的网络问题。 5G 160M组网小区CA不生效:某5G站点开启100M+60M CA功能后,测试发现UE无法正常使用CA功能。问题原因在于CA频点集标识配置错误,修正后测试正常。 5G网络优化与策略: CCE映射方式优化:针对诺基亚站点覆盖农村区域,通过优化CCE资源映射方式(交织、非交织),提升RRC连接建立成功率和无线接通率。非交织方式相比交织方式有显著提升。 5G AAU两扇区组网:与三扇区组网相比,AAU两扇区组网在RSRP、SINR、下载速率和上传速率上表现不同,需根据具体场景选择适合的组网方式。 5G语音解决方案:包括沿用4G语音解决方案、EPS Fallback方案和VoNR方案。不同方案适用于不同的5G组网策略,如NSA和SA,并影响语音连续性和网络覆盖。 4G网络优化与资源利用: 4G室分设备利旧:面对4G网络投资压减与资源需求矛盾,提出利旧多维度调优策略,包括资源整合、统筹调配既有资源,以满足新增需求和提质增效。 宏站RRU设备1托N射灯:针对5G深度覆盖需求,研究使用宏站AAU结合1托N射灯方案,快速便捷地开通5G站点,提升深度覆盖能力。 基站与流程管理: 爱立信LTE基站邻区添加流程:未提供具体内容,但通常涉及邻区规划、参数配置、测试验证等步骤,以确保基站间顺畅切换和覆盖连续性。 网络规划与策略: 新高铁跨海大桥覆盖方案试点:虽未提供详细内容,但可推测涉及高铁跨海大桥区域的4G/5G网络覆盖规划,需考虑信号穿透、移动性管理、网络容量等因素。 总结: 提供的参考资料涵盖了4G/5G无线网络优化、网规案例分析、网络优化策略、资源利用、基站管理等多个方面。 通过具体案例分析,展示了无线网络优化中的常见问题及解决方案,如NSA终端掉4G、RSSI识别天馈遮挡、CA不生效等。 强调了5G网络优化与策略的重要性,包括CCE映射方式优化、5G语音解决方案、AAU扇区组网选择等。 提出了4G网络优化与资源利用的策略,如室分设备利旧、宏站RRU设备1托N射灯等。 基站与流程管理方面,提到了爱立信LTE基站邻区添加流程,但未给出具体细节。 新高铁跨海大桥覆盖方案试点展示了特殊场景下的网络规划需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值