Mis*_*ere 29 android android-notifications taskstackbuilder
为什么我们TaskStackBuilder在创建通知时使用?我没有得到它背后的逻辑.
有人可以解释一下.
public void showText(final String text){
Intent intent = new Intent (this, MainActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
stackBuilder.addParentStack(MainActivity.class);
stackBuilder.addNextIntent(intent);
PendingIntent pendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
Notification notification = new Notification.Builder(this)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle(getString(R.string.app_name))
.setAutoCancel(true)
.setPriority(Notification.PRIORITY_MAX)
.setDefaults(Notification.DEFAULT_VIBRATE)
.setContentIntent(pendingIntent)
.setContentText(text)
.build();
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(NOTIFICACTION_ID, notification);
}
Run Code Online (Sandbox Code Playgroud)
小智 58
假设您有一个电子邮件发送应用程序,并且您有两个活动.一个是MainActivity电子邮件列表,另一个是显示电子邮件(EmailViewActivity).现在,当您收到新电子邮件时,您会在状态栏上显示通知.现在,您希望在用户点击该电子邮件时以及在用户单击后退按钮后显示该电子邮件时查看该电子邮件,以显示该电子邮件列表活动(MainActivity).对于这种情况,我们可以使用TaskStackBuilder.见下面的例子:
public void showEmail(final String text){
Intent intent = new Intent (this, MainActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
stackBuilder.addParentStack(MainActivity.class);
stackBuilder.addNextIntent(intent);
Intent intentEmailView = new Intent (this, EmailViewActivity.class);
intentEmailView.putExtra("EmailId","you can Pass emailId here");
stackBuilder.addNextIntent(intentEmailView);
PendingIntent pendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
Notification notification = new Notification.Builder(this)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle(getString(R.string.app_name))
.setAutoCancel(true)
.setPriority(Notification.PRIORITY_MAX)
.setDefaults(Notification.DEFAULT_VIBRATE)
.setContentIntent(pendingIntent)
.setContentText(text)
.build();
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(NOTIFICACTION_ID, notification);
}
Run Code Online (Sandbox Code Playgroud)
希望你能理解.
请按照以下网址获取更多详细信息:http : //developer.android.com/reference/android/support/v4/app/TaskStackBuilder.html http://developer.android.com/guide/components/tasks-and-back- stack.html http://www.programcreek.com/java-api-examples/index.php?api=android.app.TaskStackBuilder
Roh*_*ngh 25
1) 当应用程序通过应用程序图标启动时(正常流程)
2)当应用程序通过一些通知启动时
应用程序中的一般导航流程是 MainActivity->DetailActivity
但有时Notification可能会直接打开DetailActivity. 在这种情况下,按下后退按钮DetailActivity不会将您带到`MainActivity。这是一个预期的行为。但是,如果您想导航回 MainActivity,您可以修改它。
1)在您的活动中添加 android:parentActivityName="com.example.myApp.MainActivity
此功能是在 Android 4.1 中添加的。因此,如果您想针对较旧的设备。添加元标记 ALSO。
<activity android:name=".Activities.DetailActivity"
android:parentActivityName=".Activities.MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".Activities.MainActivity" />
</activity>
Run Code Online (Sandbox Code Playgroud)
2) 使用 TaskStackBuilder 创建 Pending Intent。
public PendingIntent getPendingIntent(Intent intent){
TaskStackBuilder taskStackBuilder = TaskStackBuilder.create(this);
taskStackBuilder.addNextIntentWithParentStack(intent);
PendingIntent pendingIntent = taskStackBuilder.getPendingIntent(0,PendingIntent.FLAG_UPDATE_CURRENT);
}
Run Code Online (Sandbox Code Playgroud)
现在传递这个 Pending 意图来创建通知。
我们使用 aTaskStackBuilder来确保后退按钮在活动开始时能够正常运行。允许TaskStackBuilder您访问后退按钮使用的活动历史记录。基本上,当我们希望用户在按后退按钮后导航到另一个活动时,我们会使用它。
| 归档时间: |
|
| 查看次数: |
13838 次 |
| 最近记录: |