美文网首页
面试总结(2017.7.4)

面试总结(2017.7.4)

作者: vip昨夜星辰昨夜风 | 来源:发表于2017-07-05 19:13 被阅读16次

点击通知栏后的跳转(分两种情况

初步的思路是先判断app进程是否存在,如果存在的话,就利用startActivities启动MainActivity和TargetActivity。为什么还要启动MainActivity而不直接只启动TargetActivity?因为有如下情况,进程中的所有Activity都已经退出了,但进程还没有被系统回收,这时判断进程是否存在返回true,然后只启动TargetActivity的话,按Back键任务栈就直接到底,返回桌面了。而我们要的效果是按Back键返回上一级Activity,也就是MainActivity。

如果app进程已经退出,不存在了,此时就用一个Intent启动应用,该Intent中包含一个Bundle, Bundle中存有启动TargetActivity所需的参数,这个Intent传入SplashActivity后,再由SplashActivity传给MainActivity,在MainActivity中加入判断,如果有该参数,则表示应用是从通知栏启动的,要进行跳转到TargetActivity的操作,否则就是常规启动。

代码如下

//判断app进程是否存活

if(SystemUtils.isAppAlive(context,"包名")){

//如果存活的话,就直接启动TargetActivity,但要考虑一种情况,就是app的进程虽然仍然在但Task栈已经空了,比如用户点击Back键退出应用,但进程还没有被系统回收,如果直接启动TargetActivity,再按Back键就不会返回MainActivity了。所以在启动//DetailActivity前,要先启动MainActivity。

  Intent mainIntent =new Intent(context, MainActivity.class);

//将MainAtivity的launchMode设置成SingleTask, 或者在下面flag中加上Intent.FLAG_CLEAR_TOP,如果Task栈中有MainActivity的实例,就会把它移到栈顶,把在它之上的Activity都清理出栈,如果Task栈不存在MainActivity实例,则在栈顶创建。

mainIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);       

Intent targetIntent =new Intent(context, TargetActivity.class);

targetIntent.putExtra("name","target"); 

Intent[] intents = {mainIntent, targetIntent};    

context.startActivities(intents);  

 }

else{

//如果app进程已经被杀死,先重新启动app,将TargetActivity的启动参数传入Intent中,参数经过SplashActivity传入MainActivity,此时app的初始化已经完成,在MainActivity中就可以根据传入参数跳转到TargetActivity中去了

Intent launchIntent = context.getPackageManager().getLaunchIntentForPackage("包名");       launchIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK || Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);    

Bundle args =new Bundle();      

args.putString("name","launch");      

launchIntent.putExtra(Constants.EXTRA_BUNDLE, args);    

context.startActivity(launchIntent);

  }

相关文章

  • 面试总结(2017.7.4)

    点击通知栏后的跳转(分两种情况) 初步的思路是先判断app进程是否存在,如果存在的话,就利用startActivi...

  • 2017.7.4

  • 饮品秀

    摄于2017.7.4

  • 阿里腾讯头条美团等iOS面试总结

    阿里iOS面试总结 头条iOS面试总结 腾讯iOS面试总结 百度iOS面试总结 美团iOS面试总结

  • 2017.7.4

    张萌31天 昨天去和叔叔家一块吃烧烤,老公喝晕了,回家的路上我开着车,老公还老是嚷嚷着要下车,因为妹妹一家也在车上...

  • 2017.7.4

    今天你开始上游泳课。 你第一次跟爸爸在公共浴室洗澡。 吃晚饭时,你突然跟我说,妈妈,你知道吗,今天我看到个叔叔的小...

  • 2017.7.4

    控制住自己不吻上她的肩 比忍住不去笑她与孩童抢跷跷板这件事儿 来的更难

  • 2017.7.4

  • 2017.7.4

    爸爸上海出差,我们趁机也来上海逛逛。晚饭在徐家汇的一家西班牙餐馆解决。感觉布丁对中餐是真爱啊

  • 2017.7.4

    刚刚和一好朋友聊天,他发图片说在喝酒,就围绕着喝酒一事聊起来,我告诉他,我比较害怕喝多了的人,如果我走在大街上,遇...

网友评论

      本文标题:面试总结(2017.7.4)

      本文链接:https://www.haomeiwen.com/subject/ugnqhxtx.html