public class MainActivity extends AppCompatActivity {
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Toast.makeText(this, "onNewIntent", Toast.LENGTH_SHORT).show();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent a = new Intent(this, MainActivity.class);
Intent b = new Intent(this, MainActivity.class);
b.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pia = PendingIntent.getActivity(this, 1, a, 0);
PendingIntent pib = PendingIntent.getActivity(this, 1, b, PendingIntent.FLAG_UPDATE_CURRENT);
try {
pib.send();
} catch (PendingIntent.CanceledException e) {
e.printStackTrace();
}
}
}
使用上述代码,当Activity启动时,不是弹出“ onNewIntent
”吐司,而是调用了一个新的MainActivity,忽略了FLAG_ACTIVITY_SINGLE_TOP
标志。
但是如果我将FLAG_UPDATE_CURRENT
更改为FLAG_CANCEL_CURRENT
,问题就解决了。
这是Android的错误吗?我正在运行Android Pie的模拟器上对此进行测试。
有什么方法可以更新PendingIntent的标志吗?
答案 0 :(得分:1)
使用PendingIntent.FLAG_UPDATE_CURRENT
时,此仅导致Intent
中的“附加”被更新。它对Intent
标志没有任何作用。
如果要更改Intent
标志,则需要使用2个不同的PendingIntent
(例如,使用不同的requestCode
),或者您需要取消现有PendingIntent
并创建一个新的。