当前位置: 首页 > 知识库问答 >
问题:

关机后Android活动意图依旧

翁宜年
2023-03-14

设置一个活动SingleTop从通知中接收意图。意图被活动所消耗。用户点击back按钮结束活动。onDestory被调用,isFinishing()返回true。长按Home键可调出最近的应用程序。启动以前关闭的应用程序。

用户在活动上按下home键后调用onStop时,onNewIntent也会出现类似的情况。

    null

这个问题和下面这个问题非常相似:http://grokbase.com/t/gg/android-developers/119jyzf492/getintent-removeextrade-in-activity-doesnt-work-for-android-launchmode-"singletask“

共有1个答案

苏志
2023-03-14

这是一个周而复始的工作--而不是一个解决方案。

请记住,问题是onCreate()和onNewIntent()无论发生什么都要给活动提供相同的意图(没有什么是棘手的)。最严重的违规者是onCreate(),因为捆绑包savedInstanceState总是为null。

我创建了一个serializable(让调用是sFOO)类,它保存意图操作和意图附加项的时间戳。在onCreate()期间,我加载这个序列化类(sFOO)。在onStart()中,我将sFOO与正在处理的意图进行比较。如果一切都是新的,我知道需要处理意图并更新sFoo,然后保存。如果不是,我不考虑意图。

在onStart()中

Intent activityIntent = this.getIntent();       
    if (activityIntent != null)
    {                         
        if (activityIntent.getAction() != null)
        {                       
            boolean newIntent = false;
            
            //Is the intent action being processes same as previous? 
            if (activityIntent.getAction().compareTo(this.mLastProcessedIntent.mLastIntentProcessedAction) == 0)
            {
                if (activityIntent.getExtras() != null)
                {
                    //Is the intent time stamp being processed same as previous?
                    if (activityIntent.getExtras().getLong(TIME_STAMP_KEY) != this.mLastProcessedIntent.mLastIntentProcessedTimestamp)
                    {                           
                        newIntent = true;                                                       
                    }
                }
            }
            else
            {
                Log.d(TAG,"Last processed intent action does not equal new one.");
                newIntent = true;
            }

            if (newIntent)
            {
                 updateAndSaveProcessedIntent();
                 /*YOUR CODE HERE TO HANDLE INTENT*/
            }

        }
    }
 类似资料:
  • 我有两个活动(A1,A2)。A1呼叫A2,从A2我呼叫摄像机意图如下 它打开相机,我就可以拍照了。但是问题出现了,一旦我单击save按钮(s3中的勾选按钮),我的onActivityResult就不会被调用,而是A2的onDestroy方法被调用。我在onActivityResult fn中有一些逻辑需要完成。 我在Stackoverflow上读过一些关于这个的帖子,但我无法从中得到有用的输出。我

  • 我有MainActivity上有一个片段,当用户点击片段时,用户会导航到另一个片段,在最后一个片段上有一个按钮来启动谷歌地图导航,这是代码: 问题是,在地图启动后,我希望用户在按下back时返回到我的应用程序,而不是Launcher。 有没有办法做到这一点。 这是我的完整代码: 主体活动 原木

  • 我正在开发一个连接到平板电脑时与USB设备通信的应用程序。为了避免用户接受android访问设备,我设置了一个意图过滤器: 我的问题是,有了这个意图过滤器,每次我插入设备并启动另一个活动时都会调用“onCreate”方法,如果没有意图过滤器,它只会被调用一次。这是“onCreate”方法: 广播接收机: 简单连接到设备的“setDevice”方法: 为什么?

  • 问题内容: 我为具有不同元数据的活动设置了一些别名。 在此元数据中,我设置了片段的名称,然后通过反射将其加载。 我不知道这是否是一个“干净”的解决方案,尽管通过使用Fragments并将功能放入内部,我只具有一个SuperActivity和2个Empty SubActivity来指定清单中的每个。 现在的问题是:我可以通过意图启动别名吗?无法工作,因为我找不到通过意图调用来设置元数据的方法。 我需

  • 以下ADB命令不适用于Android 11设备 结果在 这似乎与Android 11的变化有关,请参阅Android 11(R)返回空列表时查询ACTION_IMAGE_CAPTURE的意图,这里提到的解决方案是将此添加到清单 亚行有类似的吗?

  • 问题内容: 尝试在android上运行仪器测试时出现错误。我已经编写了一个名为 AudioPlayerActivity 的活动,该活动位于 com.mycompany.mobile.android.gui 包中,现在我正在尝试测试该项目的GUI,并且在以下错误中运行: java.lang.RuntimeException:无法解析以下活动:Intent {act = android.intent.