如果应用程序已经打开或在后台,待定 Intent 不会启动 Activity
Posted
技术标签:
【中文标题】如果应用程序已经打开或在后台,待定 Intent 不会启动 Activity【英文标题】:Pending Intent does not launch Activity if app is already open or in background 【发布时间】:2019-06-11 09:10:37 【问题描述】:在我的应用程序中,我有一个小部件。如果用户点击小部件,我将使用下面的代码使用挂起的意图打开 SplashScreen。
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
views.setOnClickPendingIntent(R.id.widget_main_layout, pendingIntent);
此代码工作正常,应用程序未打开并启动我的启动画面。
但是,如果应用程序已经打开并处于后台,并且如果我单击小部件,则我的 SplashScreen 不会打开,而是只有应用程序会进入前台。
谁能告诉我我的代码有什么问题?
【问题讨论】:
你如何构建intent
?你试过intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)
吗?
哦,我想你每次点击小部件时都想从 splash 中打开 APP。我对吗?
是的。我想每次用户点击小部件时打开应用程序
因为你的标志是PendingIntent.FLAG_UPDATE_CURRENT
,你应该把它改成FLAG_CANCEL_CURRENT
请将用于生成intent
的代码添加到您的帖子中。
【参考方案1】:
使用此代码
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
【讨论】:
【参考方案2】:将您传递给待处理Activity
的意图标志设置为:
Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK
【讨论】:
以上是关于如果应用程序已经打开或在后台,待定 Intent 不会启动 Activity的主要内容,如果未能解决你的问题,请参考以下文章
如果他进入后台或在不活动几分钟后如何从 android 应用程序中注销用户