只要活动未被销毁,任何在创建活动时或作为onNewIntent()
的参数传递的意图都会存在。好吧,即使被摧毁后activity is launched from recent apps section,也是另一个问题。
我的问题是,在这种情况下,最好的做法应该是避免因活动开始/从后台恢复活动而导致的重复处理,或者创建'来自最近的应用程序部分。
比如说,我正在提取getDataString()
例如,只有在应用实际通过deeplink
启动时,才能理想地跟踪分析。但是,每次在onStart()
的调用链中,它都可以在旧的意图中使用。推荐什么?
onStop()
中设置为空? //对我来说似乎最合乎逻辑。缺陷?onStop()
中设置临时字段以确定它是否为旧字段?答案 0 :(得分:0)
在尝试各种案例后,我发现了这一点。其中一些观点可能最适合我的代码库,但我猜它们通常适用。
与上述相似但更清洁。在意图中存储一个字段,指示它是否已被“消耗”[用于任何处理]。功能如下:
private void markIntentValuesTracked(final boolean status){ if(getIntent() != null){ getIntent().putExtra(LAUNCH_INTENT_VALUES_CONSUMED, status); } }
方法调用:
onCreate():
boolean isOldIntent = (getIntent().getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) != 0;
markIntentValuesTracked(isOldIntent);
onNewIntent(): markIntentValuesTracked(false);
onStop(): markIntentValuesTracked(true)