当通过通知或外部意图打开应用时,Singletop Launchmode失败
我有一个最小化的应用程序:
mainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onNewIntent(Intent intent){
super.onNewIntent(intent);
}
}
activityb.java
public class ActivityB extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_b);
}
}
androidmanifest.xml
<activity
android:name=".activities.MainActivity"
android:exported="true"
android:launchMode="singleTop"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="*/*" />
<data android:mimeType="audio/*" />
</intent-filter>
</activity>
<activity
android:name=".activities.ActivityB"
android:exported="false"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.NoActionBar">
</activity>
1) i从使用TaskStackBuilder打开MainAttivity -&Gt; GT; gt; gt; gt; gt; gt; gt; gt; gt; gt; gt; gt; gt; gt; gt; gt; gt; gt; gt; gt; gt; gt; gt; gt; gt; gt; gt; gt; gt; gt; gt; gt; gt; gt; gt; gt; gt; gt; gt; gt; gt; gt; gt; gt; gt; gt; gt; gt; gt;正如文档所述():
Intent resultIntent = new Intent(this, ActivityB.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
stackBuilder.addNextIntentWithParentStack(resultIntent);
PendingIntent resultPendingIntent =
stackBuilder.getPendingIntent(0,
PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
...
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context, "1")
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle("Title")
.setContentText("Message")
.setAutoCancel(true)
.setContentIntent(resultPendingIntent);
android.app.Notification buildNotification = mBuilder.build();
NotificationManager mNotifyMgr = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
mNotifyMgr.notify(1, buildNotification);
通过通知单击打开ActivityB,但使用Back Butace不会转到Parent Activity(MainAttivity),这正是您使用TaskStackBuilder想要的。它使应用程序关闭。
2)当打开MainActivity的应用程序在后台(主页按钮)时,如果我共享另一个应用程序的音频文件到该应用程序,则始终称为onCreate而不是onewnewintent。从启动模式的文档中看,它不应该呼唤Onnewintent,因为MainAttivity是单旋转,并且位于堆栈的顶部?
中测试
- 在 Android 10&amp; Android 11
- CompilesDkversion 32
- TargetsDkversion 32
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
尝试SingleSinstance,似乎有另一个堆栈打开,否则系统确实会调用OnnewIntent而不是ongreate。
Try singleInstance, seems like there is another stack open otherwise the system would indeed call onNewIntent instead of onCreate.