gpt4 book ai didi

android - "Intent.FLAG_ACTIVITY_CLEAR_TASK"如何在pre-honeycomb设备上使用?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:17:57 26 4
gpt4 key购买 nike

背景

我需要在某些事件上启动一个 Activity (比如通知点击,但它可以是任何其他事件,甚至来自 broadcastReceiver),如果其他 Activity 正在运行,或者至少不提供,它也会关闭所有其他 Activity 专注于他们。

为此,我使用 Intent.FLAG_ACTIVITY_CLEAR_TASK旗帜。

问题

似乎 Intent.FLAG_ACTIVITY_CLEAR_TASK 标志仅适用于 API 11( hive )及更高版本。

一些网站声称IntentCompat可能会有所帮助,但即使在那里,文档也明确指出:

This flag will only be obeyed on devices supporting API 11 or higher.

遗憾的是我找不到任何使用 IntentCompat 函数的示例,而且描述与 intents 标志文档一样含糊不清

问题

我怎样才能克服这个问题?

我真的应该添加一个LocalBroadcastManager吗?为每个 Activity 监听这个事件,并在它发生时关闭自己?

也许我在这里遗漏了什么? IntentCompat 类中显示的其他功能是什么?也许其中一个可以帮助解决这个问题?

请帮忙。


编辑:似乎Intent.FLAG_ACTIVITY_MULTIPLE_TASK不专注于之前的 Activity ,但文档对其工作原理的描述非常模糊,并且也有很多关于它的警告。

我注意到,即使我们关闭新 Activity ,应用程序之前的任务也不会获得焦点,因此它会回到用户之前访问过的地方。

有谁知道这个标志是如何工作的,我应该知道些什么?在这种情况下使用安全吗?

如果我找不到任何其他解决方案,我想我会添加它作为答案。

最佳答案

你可以使用

       intent.addFlag(Intent.FLAG_ACTIVITY_NO_HISTORY | 
Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);

或者您也可以在所有 Activity 中使用 BroadcastReciver..

  public class MyActivity extends Activity {
private FinishReceiver finishReceiver;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
finishReceiver = new FinishReceiver();
registerReceiver(finishReceiver,
IntentFilter.create("Finish", "XYZ"));
}

@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(finishReceiver);
}

private final class FinishReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
finish();
}
}
}

用于清除堆栈:

           Intent intent = new Intent("Finish");
intent.setType("XYZ");
sendBroadcast(intent);

关于android - "Intent.FLAG_ACTIVITY_CLEAR_TASK"如何在pre-honeycomb设备上使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19222044/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com