十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
第三章 Intent 意图
霍城网站制作公司哪家好,找创新互联公司!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设等网站项目制作,到程序开发,运营维护。创新互联公司自2013年创立以来到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联公司。Intent对象主要用来在Android程序的Activity、Service和BroadcastReceiver这三大组件之间传输数据。Intent分显示意图和隐式意图两种。
通过Intent对象跳转界面,在不同界面间传输数据:
a. 显示意图方式:代码中指明具体的跳转方向
Intent intent = new Intent(); //创建一个Intent对象
intent.setClass(Activity1.this,Activity2.class); //指明跳转方向
intent.putExtra("key1","value1"); //传递数据。key表示数据的索引,vlaue表示要传输的数据
intent.putExtra("key2","value2");
...... //可以同时传递多个数据,以不同的key值区分
startActivity(intent); //无需返回结果方式开启Activity
startActivityForResult(intent,requestCode); //带返回结果的方式开启Activity
备注:startActivity()和startActivityForResult()根据实际情况任选一种方式。其中,startActivityForResult()中的requestCode参数用于区分是通过当前Activity中的哪一个组件开启的Activity跳转。例如:假设当前Activity 1中有两个按钮buttonA和buttonB,点击两个按钮均跳转到Activity 2,此时requestCode即用来区分开启的Activity跳转的是点击了buttonA还是点击了buttonB。跳转之后,在所跳转的Activity 2中接收数据的操作如下:
Intent intent = getIntent(); //获取Intent对象
intent.getXXX("key"); //通过intent对象获取数据。其中,getXXX("key")方法中, XXX表示的是所传递的数据的数据类型,key要与传递数据时 putExtra()方法中对应数据的key值相同。
如果所使用的跳转方式是startActivityForResult(),则还可以在跳转之后的Activity 2中使用putExtra()方法设置返回结果的值,然后使用setResult(resultCode,intent)方法设置返回标识。其中,requestCode参数与resultCode作用类似,只是方向相反,即从Activity 2→Activity 1。
之后,可在Activity 1中重写onActivityResult(int requestCode,int resultCode,Intent data)方法中获取返回值并进行操作。
b. 隐式意图方式:代码中没有指明具体方向,而是在清单文件中配置过滤条件
通过Intent对象启动Service服务的步骤
a. 创建一个类MyService继承Service
b. 创建Intent对象,方向指向所创建的类MyService
Intent intent = new Intent(this,MyService.class);
c. 使用startService()方法直接启动服务
startService(intent);
d. 通过bindService()方法绑定服务,进而启动服务
//先创建一个ServiceConnection对象
ServiceConnection conn = new ServiceConnection();
//使用bindService()方法,参数Context.BIND_AUTO_CREATE表示如果服务不存在,则自动创建一个
bindService(intent,conn,Context.BIND_AUTO_CREATE);
c. 停止服务
stopService(intent);
d. 解绑服务
unbindService(conn);
通过Intent对象发送广播步骤
a. 在要发广播的Activity中,创建Intent对象
Intent intent = new Intent();
b. 调用setAction()方法设置过滤条件
intent.setAction("xxx");
c. 发送广播
sendBroadcast(intent);
d. 在接收广播的Activity中创建一个类MyReceiver继承BroadcastReceiver
e. 在接收广播的Activity中用代码注册广播
IntentFilter filter = new IntentFilter();
filter.addAction("xxx"); //参数xxx要与intent.setAction()设置的参数一致
或者在清单文件中注册广播
f. 在接收广播的Activity中创建一个MyReceiver对象
MyReceiver receiver = new MyReceiver();
g. 注册广播
registerBroadcas(filter,receiver);
h. 注销广播
unregisterBroadcast(receiver);
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。