gpt4 book ai didi

android - 从 BroadCast 接收器启动 Activity

转载 作者:行者123 更新时间:2023-11-29 21:53:17 25 4
gpt4 key购买 nike

我的应用程序由许多 Activity 和一个 BraodcastReceiver 组成。当我的应用收到广播 Intent 时,我想重新启动一个处于前台的 Activity。我该如何实现它?

最佳答案

使用Intent.FLAG_ACTIVITY_REORDER_TO_FRONT启动 Activity ,如果它已经在运行,则将其带到其任务历史堆栈的前面,如果没有,则作为新的开始。确认 Activity 是否正在运行使用 ActivityManager

    @Override
public void onReceive(Context context, Intent intent) {
//start activity
if(isRunning(context)){

Intent i = new Intent(context,Your_Activity_Name.class);
i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
context.startActivity(i);
}
else{
// Activity not available in activity stack
}
}

public boolean isRunning(Context ctx) {
ActivityManager activityManager = (ActivityManager)
ctx.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> tasks =
activityManager.getRunningTasks(Integer.MAX_VALUE);

for (RunningTaskInfo task : tasks) {
if (ctx.getPackageName().equalsIgnoreCase(
task.baseActivity.getPackageName()))
return true;
}

return false;
}

同时设置android:noHistory AndroidManifest.xml 将 Activity 存储在屏幕上不再可见的 Activity 堆栈中:

<activity
android:noHistory="false"
android:name=".Your_Activity" />

关于android - 从 BroadCast 接收器启动 Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13909886/

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