【问题标题】: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?有AsyncTasksBackground services 可以从Activity 工作。 Activity 是一些值的表示。长期的工作不应该做。
  • @anatoli 我希望在透明活动启动时已经加载设置活动,因为它包含有关用户应该在设置活动中做什么的信息
  • @ThunderWriting,在我在网上阅读了一些内容之后:你的 Settingsnot Activity。它是ContentProvider。尝试new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS) 或阅读here 第一个答案链接

标签: android android-activity android-context


【解决方案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 是实现这个的正确方法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-30
  • 1970-01-01
  • 2017-12-27
  • 2014-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多