您的位置:首页 > 移动开发 > Android开发

android同时打开多个Activity的方式(应用于启动页面广告等场景)

2016-02-28 00:33 716 查看
现在很多的App都有启动页面,很多产品经理都会把启动页面做成一个广告页面,那么有广告就会有跳转,这时,跳转到广告的页面之后,我们退出广告页面后,就应该是回到首页。那么这个怎么实现是最好的呢?

如果你看到这里了,应该会想:这还不简单,在广告页面写个跳转到首页不就行了。但是如果我广告页面还有别的入口呢?你还会继续想:这样我做个判断就可以了呀。那么我广告页面有多个呢?这样继续下去是不是而非常不利于扩展性、不利于维护了?

作为一个想写出优质量代码的程序员,这样的代码肯定不能出自我们之手了,那么怎么解决这个问题呢?

想一下这个需求,实际上就是在进行广告跳转之前先打开我们的首页,然后再进去广告页面。说白了就是Activity的Stack先进后出的原理。

这里给大家提供了三种方式:

第一种 利用startActivites

startActivities(Intent[] intents);


startActivity(),大伙都用过,进行一个Activity的跳转,都已经用烂了。而startActivities看名字和参数就知道,可以进行多个Intent的跳转,跳转的方法就是根据intents数组里面的intent顺序进行跳转,排在后边的最先显示出来,排在前面最后显示出来,这个有点类似stack里面的先进后出的原则了。怎么使用如下:

Intent intentIndex = new Intent(this, IndexActivity.class);
Intent intentAdvertisement = new Intent(this, AdvertisementActivity.class);
Intent[] intents = new Intent[2];
intents[0] = intentIndex;
intents[1] = intentAdvertisement;
startActivities(intents);


具体效果:



可以看到,效果完全是我们想要那种,而且代码就是上面那几行,不需再去里面的Activity里面去判断。

第二种 PendingIntent

PendingIntent,用过推送或者通知栏的朋友肯定知道是干嘛,延迟发送Intent。不过我们今天不是要延迟发送Intent,而是要通过PendingIntent来实现同时打开两个Activity,其实这个原理跟上面startActivites一样的原理,只是方式有些不同而已。

具体实现如下:

Intent intentIndex = new Intent(this, IndexActivity.class);
Intent intentAdvertisement = new Intent(this, AdvertisementActivity.class);
Intent[] intents = new Intent[2];
intents[0] = intentIndex;
intents[1] = intentAdvertisement;
PendingIntent mPendingIntent = PendingIntent.getActivities(this, 0, intents, 0);
try {
mPendingIntent.send();
} catch (PendingIntent.CanceledException e) {
e.printStackTrace();
}


同样的是一个intent数组,只不过这个是用PendingIntent.send();方法来进行执行的。我们来效果:



可以看到效果跟第一种方法实现的效果是一样的。

第三种 通过传递Intent的方式

这种方式有点类似于blog开头说的那种方式,我们在Intent的Bundle里面添加一个Intent进行跳转,也就是说在广告的Activity里面进行一次判断,为空的话,就是正常finish;不为空就利用这个Intent进行跳转,具体实现如下:

//在启动页面跳转里面:
Intent startIntent = new Intent(this, AdvertisementActivity.class);
Intent attachIntent = new Intent(this.getApplicationContext(), IndexActivity.class);
startIntent.putExtra("attachIntent", attachIntent);
startActivity(startIntent);
//在广告的页面,重写onBackPressed方法,在里面进行一次判断就行。:
@Override
public void onBackPressed() {
if (getIntent().getParcelableExtra("attachIntent") != null) {
startActivity((Intent) getIntent().getParcelableExtra("attachIntent"));
}
super.onBackPressed();
}


效果就不贴了,跟上面两种是一样的。

到这里大家就可以很明显的看出来,哪种的扩展性,维护性比较高了!

都是一些基础的知识点的利用,不是比较难、深入的逻辑和知识点,只是一些不是很常用的AndroidAPI,非常实用的哦。

如果有大神有比这个更加好的办法,欢迎在下面留言,大家一起交流哈……..
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 应用 广告