在我的应用程序中,我有启动/恢复应用程序活动的启动活动,如果有的话,将所有意图附加内容传递给它:
清单:
<activity android:name=".StartActivity"
android:theme="@style/Theme.AppCompat.Light.NoActionBar.FullScreen"
android:screenOrientation="sensorLandscape">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
代码:
public class StartActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_preloader);
String id=getIntent().getStringExtra("id");
Log.d("push~","start activity oncreate:"+id);
Intent i = new Intent(getIntent());
openLastActivity(i);
finish();
}
@Override
protected void onNewIntent(Intent intent) {
String id=intent.getStringExtra("id");
Log.d("push~","start activity new intent:"+id);
openLastActivity(intent);
super.onNewIntent(intent);
}
private void openLastActivity(Intent i){
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
if(GameActivity._this!=null) {
i.setClass(this,GameActivity.class);
startActivity(i);
} else {
i.setClass(this,SelectorActivity.class);
startActivity(i);
}
}
}
此外,我的应用程序还提供服务,该服务会生成具有以下内容意图的通知:
Intent notificationIntent= new Intent(context, StartActivity.class);
notificationIntent.putExtra("id",id);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(contentIntent);
我希望id字符串将被传递给最后一个活动活动
问题是,当我通过通知运行应用程序时,它会启动应用程序并按预期传递ID,但如果有另一个通知(当我还在应用程序中时),则StartActivity
的onCreate和onNewIntent方法都不会被调用没有数据传递给主要活动。
UPD:不知道原因,android:launchMode="singleTask"
StartActivity
解决了我的问题。现在所有意图都在onCreate
答案 0 :(得分:0)
不知道原因,android:launchMode="singleTask"
StartActivity
解决了我的问题。现在所有意图都在onCreate