如何在前面加载覆盖的透明活动时保持活动加载?
Posted
技术标签:
【中文标题】如何在前面加载覆盖的透明活动时保持活动加载?【英文标题】:How to keep an activity loading while an overlaying transparent activity is loaded on front? 【发布时间】:2018-01-13 12:28:54 【问题描述】:我从MainActivity
切换到android的Settings
活动。
我在Settings
活动前面添加了一个透明活动。
问题是,只有在调用透明活动的finish()
时,才会加载Settings
活动。
当透明活动在前面时,如何获得Settings
活动加载?
我目前的做法:
void startSettingsActivity(Context context)
Intent settingsIntent = new Intent (context,
Settings.ACTION_USAGE_ACCESS_SETTINGS);
context.startActivity(settingsIntent );
Intent transparentIntent = new Intent(context, MyTransparentActivity.class);
context.startActivity(transparentIntent);
我认为问题在于我对这两个活动使用了相同的上下文。 但是,我无法找到其他方法来处理此问题。
在透明的活动已经在前面时,保持 Settings
活动加载的最佳方法是什么?
【问题讨论】:
为什么要同时启动2个Activities
?有AsyncTasks
、Background services
可以从Activity
工作。 Activity
是一些值的表示。长期的工作不应该做。
@anatoli 我希望在透明活动启动时已经加载设置活动,因为它包含有关用户应该在设置活动中做什么的信息
@ThunderWriting,在我在网上阅读了一些内容之后:你的 Settings
是 not Activity
。它是ContentProvider
。尝试new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS)
或阅读here 第一个答案链接
【参考方案1】:
使用线程,特别是使用 AsyncTask,将有助于完成这项工作
【讨论】:
AsyncTask 用于执行不在 UI 线程中的任务,例如连接到服务器/http/...等。但是,就我而言,我想“构建” UI,所以我需要 UI 线程。我可能在你的回答中遗漏了一些东西,你能详细说明一下吗?【参考方案2】:如果这是在您控制的代码中,您可以启动第一个活动,然后它会在其自身之上启动透明活动。
但是,由于设置活动不受您的控制,请尝试startActivities(Intent[])
。它的行为就好像你调用了startActivity(intent[0])
,然后调用了startActivity(intent[1])
,依此类推。
Intent settingsIntent = new Intent(context, Settings.ACTION_USAGE_ACCESS_SETTINGS);
Intent transparentIntent = new Intent(context, MyTransparentActivity.class);
context.startActivities(new Intent[] settingsIntent, transparentIntent);
【讨论】:
使用Activity
是实现这个的正确方法吗?以上是关于如何在前面加载覆盖的透明活动时保持活动加载?的主要内容,如果未能解决你的问题,请参考以下文章
如何在保持 UISearchBar 处于活动状态的同时强制 UITableView 重新加载数据?
页面重新加载后,如何使用 twitter bootstrap 保持当前选项卡处于活动状态?