2017-08-05 50 views
0

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活动加载的最佳方式,而透明的活动已经在前面了?

+0

你为什么要在同一时间开始2个“活动”?有'AsyncTasks','后台服务',可以从'活动'工作。 “活动”是一些值的表示。长期的工作应该永远不会做。 – anatoli

+0

@anatoli我希望当透明活动启动时已经加载设置活动,因为它包含有关用户应该在设置活动中应该做什么的信息 – ThunderWiring

+0

@ThunderWriting,在我读了一些web之后:你的'Settings'是**不**活动。它是'ContentProvider'。尝试'新的意图(Settings.ACTION_USAGE_ACCESS_SETTINGS)'或阅读[这里](https://github.com/Karumi/Dexter/issues/96)首先回答链接 – anatoli

回答

0

使用线程,专门使用的AsyncTask,将帮助完成这件事

+0

AsyncTask是用于执行不在UI线程中的任务,如连接到一个服务器/ http/...等。 但是,就我而言,我想“构建”UI,所以我需要UI线程。我可能在你的回答中错过了一些东西,请你详细说明一下。 – ThunderWiring

0

如果这是在代码中你控制,你可以启动的第一个活动,那么这将发动其本身上的透明的活动。

但是,由于设置活动不受您的控制,因此请尝试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}); 
+0

确实使用'Activity'是实现这个的正确方法吗? – ThunderWiring