我想以隐含的意图启动应用程序,但在该应用程序启动之前,我需要处理意图并启动状态机,然后加载Activity
。
我可以使用广播接收器或活动
来做到这一点<receiver android:name="com.13.MyBroadcastReceiver">
<intent-filter>
<action android:name="com.13.StartStateMachine" />
</intent-filter>
</receiver>
但是如果其他应用程序响应同样的意图我就无法控制。
或
<activity android:name="com.13.MyReceiverActivity">
<intent-filter>
<action android:name="com.13.StartStateMachine" />
</intent-filter>
</activity >
但这不是很干净,我可以进行一些处理onCreate()
然后finish()
。
我是否可以将这些方法结合起来?
我的意思是使用隐式(或显式)意图从另一个应用程序加载一个类(不是BroadcastReceiver
或Activity
)?
答案 0 :(得分:1)
由于这两个应用程序都属于您,因此欢迎您使用您想要的任何IPC机制。
使用Activity
的好处是您可以选择说一切都在同一个任务中。因此,当App A启动App B的活动时,这可能都是一项任务。任何其他IPC机制都会迫使您开始新任务。
因此,正如我在评论中建议的那样,使用PackageManager
将隐式Intent
转换为明确的Intent
。然后,使用您想要的任何IPC。如果你想使用&#34;广播&#34; (显式finish()
确实使它更像是一个&#34;窄播&#34;),欢迎你这样做。
恕我直言,说一项活动将控制转移到另一项活动,可能使用startActivity()
,并不是真的很糟糕&#34;。毕竟,应用程序使用的许多启动屏幕都是这样做的。恕我直言,使用任何其他IPC机制开始一项活动,当mGoogleMap.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener() {
@Override
public void onMapLongClick(LatLng latLng) {
Intent ii = new Intent(MapActivity.this, OtherActivity.class);
ii.putExtra("clicked_location", latLng);
startActivity(ii);
}
});
工作正常时,肮脏&#34;。