Intent用法——在活动之间跳转(二)

OK我们来讲一下隐式Intent~~~~
在隐式Intent部分,将给出3个主要例子,来帮助对其的理解,主要目录如下。

什么是隐式Intent

在显式Intent中,我们想要启动哪个活动被明确指出,而隐式Intent指定了一系列更为抽象的action和category等信息,交由系统去分析这个Intent并启动相应的活动。

那么什么叫做相应的活动?其实就是与我们给出的这些信息相匹配的活动~请看例子1,如下:

利用隐式Intent来实现活动跳转

首先来配置我们的action和category等信息,这一步在AndroidManifest.xml中完成,在<activity> 标签下配置<intent-filter> ,添加如下代码:

<activity android:name=".SecondActivity">
            <intent-filter>
                <action android:name="com.example.activitytest.ACTION_START" />
                //指明当前活动可以响应的action
                <category android:name="android.intent.category.DEFAULT" />
                //附加信息,更精确地指明当前活动能够响应的Intent中还可能带有的category
            </intent-filter>
        </activity>

这就是我们设置的action和category的信息,也就是说,只有Intent中的内容与我们所给定的这些内容完全匹配的时候,该Intent才能被活动响应。

好的,现在我们来让我们Intent匹配这些信息,来使Intent能够被启动。
修改FirtstActivity中按钮的点击事件:

 button1.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
               //这个是隐式intent
               Intent intent=new Intent("com.example.activitytest.ACTION_START");
               startActivity(intent);
               }
            });
    }

值得提出的是,在这里我们没有指定category,是因为android.intent.category.DEFAULT 是一种默认的category,在调用startActivity() 方法的时候会自动将这个category添加到Intent中。而如果需要配置别的category类型,则在<intent-filter> 和FirtstActivity中按钮的点击事件作相应添加就可以啦。

运行程序,在FirstActivity的界面点击Button 1,发现你已经可以启动SecondActivity啦~~~而且这次是通过隐式Intent启动的~

利用隐式Intent打开浏览器

使用隐式Intent还可以启动(你自己app之外的)其他活动,这让Android多个应用程序之间的功能共享成为了可能。下面这个例子是来调用系统的浏览器的,同样通过在FirstActivity中点击按钮跳转到浏览器页面。

 button1.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                    //打开浏览器界面
                    Intent intent = new Intent(Intent.ACTION_VIEW);    
                    //指定intent的action是 Intent.ACTION_VIEW 
                    intent.setData(Uri.parse("http://www.baidu.com"));     
                    //Uri.parse()可以将一个网址字符串解析成Uri对象,
                    //再调用intent的setData()方法将这个Uri对象传递进去。
                    startActivity(intent);
                  }
            });
    }

代码解释:

setData() 接收一个Uri对象,主要用于指定当前Intent正在操作的数据,而这些数据通常以字符串的形式传入到Uri.parse()中。

重新启动程序,在FirstActivity中点击Button 1,就可以看到浏览器的打开~

利用隐式Intent实现拨号功能

将FirstActivity中public void onClick(View v) 里的代码块作如下修改:

 //调用系统拨号界面
               Intent intent=new Intent(Intent.ACTION_DIAL);
               intent.setData(Uri.parse("tel:10086"));
               startActivity(intent);

重新启动程序,可以看到程序调用了拨号界面,并显示了10086~

关于Intent在活动中跳转的功能介绍大概就是这些了~除此之外,Intent还可以在活动之间传递数据,比如向下一个活动传递数据,或者返回数据给上一个活动。

### Flink 大数据处理优化技巧与最佳实践 #### 调优原则与方法概述 对于Flink SQL作业中的大状态导致的反压问题,调优的核心在于减少状态大小以及提高状态访问效率。通过合理配置参数和调整逻辑设计可以有效缓解此类瓶颈[^1]。 #### 参数设置建议 针对不同版本下的具体特性差异,在实施任何性能改进措施前应当充分理解当前使用的Flink版本特点及其局限性;同时也要考虑特定应用场景的需求特征来定制化解决方案。这包括但不限于并行度设定、内存分配策略等方面的选择[^2]。 #### 数据流模式优化 采用广播变量机制可作为一种有效的手段用于降低主数据流转过程中所需维护的状态量级。当存在一对多关系的数据集间需频繁交互时,将较小规模的一方作为广播状态保存下来供另一方查询匹配使用不失为明智之举。此方式特别适用于维表Join操作中,其中一方变动相对较少但又必须保持最新记录的情况[^3]。 ```sql -- 创建临时视图以支持后续JOIN操作 CREATE TEMPORARY VIEW dim_table AS SELECT * FROM kafka_source; -- 定义Temporal Table Function以便获取指定时间点上的历史快照 CREATE FUNCTION hist_dim_table AS 'com.example.HistoricalDimTableFunction'; -- 执行带有时态条件约束的JOIN语句 SELECT o.order_id, d.product_name FROM orders o LEFT JOIN LATERAL TABLE(hist_dim_table(o.event_time)) AS d ON o.product_id = d.id; ``` 上述代码片段展示了如何利用Flink SQL实现基于时间戳的历史维度表连接功能,从而确保每次都能准确捕捉到事件发生瞬间对应的最恰当的产品名称信息。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值