我有一个Android测试应用程序,它在onResume中处理自定义URL深层链接(例如myapp:// xxx / yyy),如下所示:
if (intent.getAction() != Intent.ACTION_VIEW) return;
String data = intent.getDataString();
if (data == null) return;
// do stuff with 'data' which is the custom URL
问题是,每次应用程序恢复时,此代码会一次又一次地处理URL,即使它没有使用深层链接重新打开!让我们说我:
根据一些建议,我将代码移动到onCreate()。这仍然反复运行,例如,即使应用程序仍处于前台,设备也会旋转。所以onCreate也不是一个好选择。
如何避免在应用恢复时反复获取相同的网址?
答案 0 :(得分:1)
根据上述评论,最佳解决方案似乎是:
代码示例:
void onCreate(Bundle savedInstanceState) {
if (savedInstanceState == null) {
if (intent.getAction() == Intent.ACTION_VIEW) {
String data = intent.getDataString();
if (data != null) {
// ... process URL in 'data'
}
}
}
}
答案 1 :(得分:0)
处理意图使用后 setIntent(NULL);
答案 2 :(得分:0)
我认为你应该处理OnNewIntent
和onCreate
中的网址(当从后台变为活动时都不会被调用),为了避免在旋转时进行多次处理,我有两个解决方案:
解决方案1 :
在onCreate
中,如果savedInstanceState为空,则忽略它,此基于多次调用的解决方案来自轮换,只需要在应用端进行更改。
解决方案2 :
使深度链接网址动态,每次更改(如myapp://xxx/yyy?stamp=xxxx
),您可以检查网址是否已经处理。此解决方案可以采用任何案例,但需要您修改URL(可能来自服务器端)。