Kev*_*vin 4 android launchmode android-pendingintent
我将launchMode设置为singleTask的活动:
<activity
android:name="com.blah.blah.MyActivity"
android:launchMode="singleTask">
</activity>
Run Code Online (Sandbox Code Playgroud)
我有一个PendingIntent持续通知,启动该活动:
Intent activityIntent = new Intent( this,
MyActivity.class );
TaskStackBuilder stackBuilder = TaskStackBuilder.create( this );
stackBuilder.addParentStack( MyActivity.class );
stackBuilder.addNextIntent( activityIntent );
PendingIntent resultingActivityPendingIntent = stackBuilder.getPendingIntent( REQUEST_CODE,
PendingIntent.FLAG_UPDATE_CURRENT );
...
m_notificationBuilder.setContentIntent( resultingActivityPendingIntent );
startForeground( ONGOING_NOTIFICATION_ID,
m_notificationBuilder.build() );
Run Code Online (Sandbox Code Playgroud)
当我与现有的MyActivity交互时,我点击Home并通过启动器重新启动MyActivity,MyActivity onNewIntent()会按预期调用.
问题是当我与现有的MyActivity交互时,我点击正在进行的通知时,会创建一个新的MyActivity onCreate(),现有的MyActivity将被销毁onDestroy().我预计onNewIntent()会调用MyActivity .为什么不这样呢?
我试过这些答案没有成功:
你的问题是由于使用TaskStackBuilder.此代码导致您的问题:
Intent activityIntent = new Intent( this,
MyActivity.class );
TaskStackBuilder stackBuilder = TaskStackBuilder.create( this );
stackBuilder.addParentStack( MyActivity.class );
stackBuilder.addNextIntent( activityIntent );
PendingIntent resultingActivityPendingIntent =
stackBuilder.getPendingIntent(REQUEST_CODE,
PendingIntent.FLAG_UPDATE_CURRENT );
Run Code Online (Sandbox Code Playgroud)
当您使用TaskStackBuilder这种方式时,它会在生成的Intents中设置其他标志,这些标志会在您的Activity启动之前重置任务(任务中的所有活动都将被销毁).
而是使用:
Intent activityIntent = new Intent( this,
MyActivity.class );
PendingIntent resultingActivityPendingIntent =
PendingIntent.getActivity(this, REQUEST_CODE,
activityIntent, PendingIntent.FLAG_UPDATE_CURRENT );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1111 次 |
| 最近记录: |