我有一个活动,它会在用户刷新刷新时启动服务。此服务从Internet下载一些数据并将其存储在共享首选项中并将一些Extras意图发送到activity.And in activity OnNewIntent()我是完全获取我之前放入该意图的所有内容。在这些额外活动的基础上,活动将从共享首选项中获取数据并在listView中显示。一切都很好,我没有任何例外。
但问题是:
当我向下滑动刷新(服务将启动)时,我接到一个电话,我的应用程序的活动隐藏和电话显示,以便我可以接听电话。记住服务已经开始因此,当服务完成其下载任务时,它会启动活动,就像我粘贴代码一样:
//where i is intent and I have initialized it so no worries!
i.setAction("xxxxx.CUSTOM_ACTION");
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(i);
并且该活动在电话呼叫期间显示。我不希望它出现,我希望该活动保持在任何地方,即使服务通过发送一些意图启动它。 请告诉我是否有任何意图标志可以解决我的问题。任何帮助将不胜感激!如果对问题有任何疑惑,请告诉我,我可以更简单地解释一下。
答案 0 :(得分:2)
您可以持续检查服务中正在运行的应用程序列表,并推送您的活动。
您可以在共享首选项或应用程序实例中保存HTTP响应。您也可以使用广播接收器。
使用此功能,您将获得前台运行的应用程序:
ActivityManager activityManager = (ActivityManager)
getSystemService(Context.ACTIVITY_SERVICE);
RunningTaskInfo foregroundTaskInfo = activityManager.getRunningTasks(1).get(0);
String foregroundTaskPackageName = foregroundTaskInfo .topActivity.getPackageName();
如果您的应用程序中存在服务生命周期。然后,您可以使用BindService
。
答案 1 :(得分:1)
您可以实现一个电话呼叫状态监听器,该监听器知道电话何时空闲,忙碌或振铃。添加更多逻辑,以便在电话忙时不启动您的活动。当它从忙碌转为空闲时,开始你的活动。
此链接有Phone Call State Listener的示例。