您的位置:首页 > 其它

从通知里启动应用的activity,返回时返回应用的主界面

2016-05-17 09:01 525 查看
其实这个开发主要是一种开发思路:我的思路大致是这样的。

1. 首先在启动这个具体的activity之前,判断当前应用是否在栈顶,如果在,就不启动主Activity了,如果不在则启动主Activity;

2. 启动通知具体指向的Activity

启动通知具体指向及启动主Activity的具体代码:

Intent i = new Intent();
startHomeActivity(context);

MobclickAgent.onEvent(context, "TabMain_InsuranceDeduction");
i.setClass(context, GetInsuranceRequestActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
if (i.getComponent() != null || i.getAction() != null)
context.startActivity(i);


实际上,上述代码可能会启动两个Activity,原因是:如果当前应用不在栈顶,则先启动主Activity,然后在启动具体指向的Activity;如果在栈顶,则只启动具体的Activity

判断当前Activity是否在栈顶的具体代码如下:

private void startHomeActivity(Context context){
if (!isAppOnForeground(context)){
Intent homeIntent = new Intent(context, HomeActivity.class);
homeIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
context.startActivity(homeIntent);
}
}
public boolean isAppOnForeground(Context context) {
ActivityManager activityManager= (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> tasksInfo = activityManager.getRunningTasks(1);
if (tasksInfo.size() > 0) {
// 应用程序位于堆栈的顶层
if (context.getPackageName().equals(tasksInfo.get(0).topActivity
.getPackageName())) {
return true;
}
}
return false;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: