Bildirim tepsisi için bir bildirim oluşturuyorum. Böyle bir tık niyet belirterek ediyorum:Daha fazla amaç kaldıramıyorum!
Intent intent = new Intent(context, MyActivity.class);
intent.putExtra("foo", true);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.setData(Uri.parse("" + System.currentTimeMillis()));
MyActivity sınıf "foo" parametresi varken gayet başlattı alır. Ancak, sonradan ekstra o kurtulmak edemez - Niyet inat görünüyor:
// MyActivity
public void onNewIntent(Intent intent) {
super.onNewIntent(intent);
// please go away..
intent.removeExtra("foo");
getIntent().removeExtra("foo");
}
Yineleme Yapmak niyet anahtarları üzerinde "foo" artık var olduğunu göstermektedir. Fakat aktiviteyi arka plana koyarsam, tekrar ön plana getirirsek, "foo" parametresi tekrar mevcut olur.
Bundan nasıl kurtulacağını bilen var mı? Ben de setIntent(), aynı davranışı aramayı denedim. Bu, başlatıcının asıl amaç üzerinde tuttuğu ve yeniden kullanmaya devam etmesi gibidir.
Teşekkürler
Bu Java ve işaretçiler ile aptal vakalardan biridir. Kopyalamadan sonra asıl amacı sonlandırmayı denemek zorunda kalabilirsiniz. – hwrdprkns
Ah, orijinal amacı nasıl sonuçlandırır, onNewIntent() öğesinden finish() gibi bir şey yapar mıyım ve yalnızca etkinliği yeniden başlatır mıyım? Sanırım kullanıcı sinsi sıçramayı görmezdi, ve bu "foo" undan kurtulmak isterdim. Bence işe yarayabilir! – user291701
'Intent.finalize()'? – hwrdprkns