如何在重新启动Android应用程序时定义已启动的活动?

时间:2013-07-31 15:44:14

标签: android android-activity android-service

我对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,但我似乎无法弄清楚应该如何做到这一点。我一直在研究将活动绑定到服务,但我不确定这是否有任何帮助。这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

根据我的理解,您可以使用ShaeredPreferences。创建“loggedin”之类的首选项,并在首次登录时将boolean变量设置为true。现在,您可以在点击“注销”时将其设置为false {{1 }}。

启动Button后,您可以在致电Activity前查看SharedPreference,如果值为setContentView(),则true finish()并打开你的其他LoginActivity

我提供的文档链接提供了创建,打开和修改Activity的好例子