我对 Android 相当陌生,目前正在开发一个简单的 XMPP 客户端。用户应该能够登录,并且应该在 XMPP 消息到达时收到通知。应该可以访问在当前会话期间到达的所有消息的概览。
启动应用程序时,会启动 LoginActivity,提示用户填写他或她的凭据。如果提供了正确的凭据,则会启动后台服务:
Intent intent = new Intent(this, NotificationService.class);
startService(intent);
启动时,通知服务会向 XMPP 连接添加一个数据包侦听器,并请求在前台运行。用户会收到由该前台请求引起的通知(“正在进行”)。现在我提供了第二个名为 XMPPClientActivity 的活动,显示了在会话期间收到的所有消息和一个简单的注销按钮。从“正在进行的”通知中打开应用程序时,将启动 XMPPClientActivity,因为通知定义如下:
xmppIntent = new Intent(this, XMPPClientActivity.class);
pendingIntent = PendingIntent.getActivity(this, 0, xmppIntent, 0);
NotificationCompat.Builder xmppBuilder = new NotificationCompat.Builder(this);
xmppBuilder.setContentIntent(pendingIntent);
// Notification details
startForeground(id, xmppBuilder.build());
但是,当从主屏幕打开应用程序时,LoginActivity 会再次打开。当然,我希望启动 XMPPActivity,但我似乎无法弄清楚应该如何完成。我一直在研究将活动绑定到服务,但我不确定这是否有任何帮助。这样做的正确方法是什么?