关于安卓intent启动activity的几种情况

先说第一种

我们一般写的比较简单的方法就是starActivity(new Intent(context,A.class)).这种启动的方式很简单,就是一个从当前界面跳转到下一个activity界面。

第二种

首先我们先要说一个问题,当你有弹窗信息,或者通知栏里面出现了通知,然后你点击进去,不知道你有没有在意,APP会在五秒钟之后打开,当然,有的不会 大多数还是会的。现在我们就说一下这个问题

在谷歌的 Android API Guides 中,特意提醒开发者不要在后台启动 activity,包括在 Service 和 BroadcastReceiver 中,这样的设计是为了避免在用户毫不知情的情况下突然中断用户正在进行的工作.

就是当通过 home 键将当前 activity 置于后台时,任何在后台startActivity 的操作都将会延迟 5 秒,除非该应用获取了 "android.permission.STOP_APP_SWITCHES" 权限.但是这个权限是系统级别的权限.

解决方法:

不能够用传统的startActivity来启动Activity

Intent intent = new Intent(context, A.class);

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

context.startActivity(intent);

而是要用以下形式来启动Activity:

Intent intent = new Intent(context, A.class);

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

PendingIntent pendingIntent =

PendingIntent.getActivity(context, 0, intent, 0);

try {

pendingIntent.send();

} catch (PendingIntent.CanceledException e) {

e.printStackTrace();

}

OK,这种方式启动activity,一般是用在有后台任务的时候

第三种,带返回值的启动

starActivityforResult(),里面有两个参数,一个是intent,还有一个是requestcode,当你启动下一个界面的然后又关闭的时候,会得到一个返回值,这个返回值就是这个requestcode,你需要做的就是通过onActivityforResult()方法去进行对这个requestcode进行判断,处理好相应的逻辑



这个文章是我睡前写的,手机上面实在不好打字

图片发自App

你可能感兴趣的:(关于安卓intent启动activity的几种情况)