从BroadcastReceiver显示活动时出现问题

时间:2011-08-09 08:23:47

标签: android

嗨我有一个带有以下代码的广播接收器。

   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。

请让我知道你的想法。

3 个答案:

答案 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>