繁体   English   中英

如何启动子活动而不通过父活动?

[英]How to launch a child activity without pass through the parent activity?

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

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

我的问题是如何从服务启动活动B(作为独立活动)而不通过活动A(这是主要活动)?

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

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

这是我的清单:

<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);
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM