嗨我有一个带有以下代码的广播接收器。
1. Intent i = new Intent(context, A.class);
2. i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
3. context.startActivity(i);
这很好用,我的活动确实开始,但是它从我的主要活动开始,即B.我想要的是从我的广播接收器我应该能够启动一个活动A,这样它就不能从头开始为什么B总是在后台开始。我做错了什么。
另外,活动A提到有Theme.Dialog。
请让我知道你的想法。
答案 0 :(得分:0)
如果你开始一个活动,那么它当然会变成前景。之前在前景的活动将自动转到后台。
如果你不需要在B之上启动它,那么从服务开始呢?。活动A保持不变。
如果您需要从服务中访问任何内容而无需显示活动,那么您肯定正在寻找其他人,然后以意图开始活动。
最后,如果你真的想要开始活动A,并且B将在最顶层,那么在启动A后启动活动B
答案 1 :(得分:0)
新活动应该从现有活动开始。
如果你想在没有出现在活动历史堆栈中的情况下启动某些东西,那么这个东西可能不应该是Activity
而是Service
而不是
编辑:我认为您可以使用FLAG_ACTIVITY_NEW_TASK
与清单中的android:launchMode="singleTask"
一起更改此行为。 (见documentation on launch mode)
答案 2 :(得分:0)
我认为你的意思是你想用不同的活动启动应用程序。您可以编辑AndroidManifest.xml文件,以便首先启动不同的活动。
编辑:以下是一个例子:
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MainActivity" <-this will start first
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name =".otherActivity"
android:theme="@android:style/Theme.Dialog">
</activity>
<activity android:name=".anotherActivity"></activity>
</application>