我有一个应用程序(让我们称之为“SendingApp”)试图通过在按钮A 上调用它来启动我的应用程序:
Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.example.sendingapp");
launchIntent.putExtra("my_extra", "AAAA"));
startActivity(launchIntent);
和按钮B :
Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.example.sendingapp");
launchIntent.putExtra("my_extra", "BBBB"));
startActivity(launchIntent);
在我自己的应用程序中(让我们称之为“ReceivingApp”)我在Manifest中定义了一个启动器活动:
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
在ReceivingApp中我的 MainActivity 类的onCreate方法中,我收到额外信息并将其输出到TextView,如下所示:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = getIntent();
if(intent != null) {
Bundle extras = intent.getExtras();
if(extras != null && extras.getString("my_extra") != null){
((TextView)findViewById(R.id.test_text)).setText(extras.getString("my_extra"));
} else {
((TextView)findViewById(R.id.test_text)).setText("NORMAL START");
}
}
}
通常通过点击其图标或开始从Eclipse调试它来正常启动ReceivingApp工作正常,TextView显示为“NORMAL START”。
当我按下后退按钮关闭ReceivingApp并转到SendingApp并按下按钮A时,ReceivingApp启动并显示AAAA。如果我再次返回并按下按钮B,则启动ReceivingApp并显示BBBB。到目前为止,非常好。
当我强制退出任务列表或应用程序管理器中的ReceivingApp然后转到SendingApp并按下按钮A时,ReceivingApp将启动并显示AAAA(仍然正确)但是当我返回并按下按钮时B,ReceivingApp将启动但不会调用 onCreate ,因此不显示BBBB但仍然显示AAAA,就像它已被带到前台但没有收到任何意图。按下ReceivingApp中的后退按钮也会显示没有新的MainActivity实例放在活动堆栈上。
关闭ReceivingApp并通过单击其图标启动它可修复此问题。但我需要能够接收不同的意图,即使它在收到第一个意图时没有运行。
之前有没有人遇到过这种行为?我的代码是接收错误的数据还是Android错误?