在我的应用程序中,我必须执行两项 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/