在我的应用中,我需要两项活动和一项后台服务。作为主要活动的第一个活动(活动A)用于启动/停止服务。该服务用于在需要启动活动时启动活动(活动B)(即使活动A未运行,服务也可以启动活动B)。
finish()
时,这是屏幕上显示的活动A,我希望显示在活动B之前启动的最后一项活动。我的问题是如何从服务启动活动B(作为独立活动)而不通过活动A(这是主要活动)?
这是我用来从服务启动Activity 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>
提前致谢
答案 0 :(得分:2)
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);
}