android - 如何在不通过父 Activity 的情况下启动子 Activity ?

标签 android android-activity android-manifest

在我的应用程序中,我必须执行两项 Activity 和一项后台服务。第一个 Activity ( Activity A)是主要 Activity ,用于启动/停止服务。该服务用于在需要启动 Activity (Activity B)时启动它(即使 Activity A 未运行,该服务也可以启动 Activity B)。

  • 当服务人员启动 Activity B 时,我可以在几毫秒内在屏幕上看到 Activity A 已启动并在显示 Activity B 之前消失。
  • 当从 Activity B 调用 finish() 时,这是显示在屏幕上的 Activity A,我希望显示在 Activity B 之前启动的最后一个 Activity。

我的问题是如何在不通过 Activity A(这是主要 Activity )的情况下从服务启动 Activity B(作为独立 Activity )?

这是我用来从服务启动 Activity B 的代码:

Intent intent = new Intent(this, ActivityB.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

这是我的 list :

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >        

    <!-- Activity A -->
    <activity
        android:name="ActivityA"
        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 B -->
    <activity
        android:name="ActivityB"
        android:excludeFromRecents="true"
        android:exported="true"
        android:immersive="true"
        android:launchMode="singleTask" />

    <!-- Service -->
    <service
        android:name="Service"
        android:enabled="true"
        android:exported="true" >
    </service>
</application>

提前致谢

最佳答案

Just Place this code in your Activity A


 private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                Log.d("Service","Message");
                ActivityA.this.finish();
            }
        };

        @Override
        protected void onResume() {
            // TODO Auto-generated method stub
            super.onResume();
            LocalBroadcastManager.getInstance(this).registerReceiver(
                    mMessageReceiver, new IntentFilter("finishA"));
        }

//将此代码放在您的 Activity B 的 onCreate() 方法中

 @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

             Intent intent = new Intent("finishA");                    

             LocalBroadcastManager.getInstance(ActivityB.this).sendBroadcast(intent);
        }

关于android - 如何在不通过父 Activity 的情况下启动子 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22708057/

相关文章:

android - 从 fragment 中移除 View

android - Eclipse-创建新 Activity

android - Unity3DGenerateManifest.cs

Android 应用程序在 Facebook 登录时崩溃

java - 在 Android SDK 中启动新 Activity

AndroidManifest 限制

android - 软键盘出现时向上移动布局

android - 跨平台移动应用程序 SDK : Write Once Deploy Everywhere

android - 使用 google play 服务运行的程序中 log cat 的 jar 不匹配

Android AsyncTask 和 Thread 不同的行为