android – Intent flags – 如何启动一个新的活动实例并让其他人关闭

android – Intent flags – 如何启动一个新的活动实例并让其他人关闭,第1张

概述我对意图标志并不熟悉,所以请耐心等待. 我正在做一个应用程序,它在ViewPager中显示数据库中的内容.我还有一个小部件,它不时拉出一个随机行并显示它.现在,当我点击它时,我将进入一个活动,其中显示相同的内容,现在我可以对其采取行动. 一切正常,但是当我有一个已经运行的活动,然后点击小部件时,它似乎创建了一个新实例,因为当我按下后退按钮时,我没有退出应用程序,而是被带到之前的实例或其他东西. 有 我对意图标志并不熟悉,所以请耐心等待.

我正在做一个应用程序,它在VIEwPager中显示数据库中的内容.我还有一个小部件,它不时拉出一个随机行并显示它.现在,当我点击它时,我将进入一个活动,其中显示相同的内容,现在我可以对其采取行动.

一切正常,但是当我有一个已经运行的活动,然后点击小部件时,它似乎创建了一个新实例,因为当我按下后退按钮时,我没有退出应用程序,而是被带到之前的实例或其他东西.

有没有办法启动一个活动的新实例,如果有一些以前的实例运行关闭它们,使用标志?

我玩了CLEAR_top和那些东西但老实说我不知道​​我在做什么.

谢谢!

//编辑

Intent.FLAG_ACTIVITY_CLEAR_top似乎没有做任何事情. Intent.FLAG_ACTIVITY_CLEAR_top | Intent.FLAG_ACTIVITY_SINGLE_top似乎将前一个放在顶部并忽略了新的一个或者什么.也许让我改一下,我从启动器图标开始活动,然后我按下主页按钮并单击小部件,它应该启动一个新实例,其中VIEwPager.setCurrentItem设置正确的页面(与小部件相同).如果之前没有运行主要活动,一切都没问题,但如果它正在运行,请完成它.

MyWidgetProvIDer extends appwidgetprovider@OverrIDepublic voID onUpdate(Context context,AppWidgetManager appWidgetManager,int[] appWidgetIDs) {    Log.d("MainActivity","MyWidgetProvIDer # onUpdate");    for (int i = 0; i < appWidgetIDs.length; i++) {        int appWidgetID = appWidgetIDs[i];        Intent intent = new Intent(context,MainActivity.class);        intent.putExtra("from_Widget",true);        //intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_top | Intent.FLAG_ACTIVITY_SINGLE_top);        PendingIntent pendingIntent = PendingIntent.getActivity(context,intent,PendingIntent.FLAG_UPDATE_CURRENT);        RemoteVIEws vIEws = new RemoteVIEws(context.getPackagename(),R.layout.Widget_layout);        vIEws.setonClickPendingIntent(R.ID.Widget_container,pendingIntent);        appWidgetManager.updateAppWidget(appWidgetID,vIEws);    }}
解决方法 有几种方法可以做到这一点.如果要创建新实例并关闭当前实例(假设它位于活动堆栈的顶部),则需要设置Intent.FLAG_ACTIVITY_CLEAR_top.

另一种替代方法是,如果活动已经位于堆栈顶部,则重用该活动的相同实例.在这种情况下,您需要设置Intent.FLAG_ACTIVITY_CLEAR_top和Intent.FLAG_ACTIVITY_SINGLE_top.如果这样做,AndroID将不会创建活动的另一个实例,但会调用您活动的onNewIntent()来传递新的Intent.

总结

以上是内存溢出为你收集整理的android – Intent flags – 如何启动一个新的活动实例并让其他人关闭全部内容,希望文章能够帮你解决android – Intent flags – 如何启动一个新的活动实例并让其他人关闭所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1137173.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存