如何在前面加载覆盖的透明活动时保持活动加载?

Posted

技术标签:

【中文标题】如何在前面加载覆盖的透明活动时保持活动加载?【英文标题】:How to keep an activity loading while an overlaying transparent activity is loaded on front? 【发布时间】:2018-01-13 12:28:54 【问题描述】:

我从MainActivity切换到androidSettings活动。

我在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?有AsyncTasksBackground services 可以从Activity 工作。 Activity 是一些值的表示。长期的工作不应该做。 @anatoli 我希望在透明活动启动时已经加载设置活动,因为它包含有关用户应该在设置活动中做什么的信息 @ThunderWriting,在我在网上阅读了一些内容之后:你的 Settingsnot 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 是实现这个的正确方法吗?

以上是关于如何在前面加载覆盖的透明活动时保持活动加载?的主要内容,如果未能解决你的问题,请参考以下文章

Android:如何在活动上方显示透明加载层

如何在保持 UISearchBar 处于活动状态的同时强制 UITableView 重新加载数据?

页面重新加载后,如何使用 twitter bootstrap 保持当前选项卡处于活动状态?

在页面重新加载后保持活动选项卡时加载 ajax 内容(引导 4)

如何防止活动在按下按钮时加载两次

当活动中的异步任务完成时如何在片段中重新加载ui?