IntentService完成父活动

时间:2016-01-28 23:58:06

标签: android android-intent google-cloud-messaging

我在Android应用程序中使用名为“FirstStart”的Activity。在用户按下“注册”按钮后,我启动注册意向服务以在我的服务器和GCM上注册用户。 在我的onClik(View v)中,我启动了意图:

Intent intent = new Intent(this, RegistrationIntentService.class);
        intent.putExtra("user", givenUsername);
        startService(intent);

在此之后,public void onHandleIntent(Intent intent)启动并从GCM获取一个令牌并将其放入我的服务器。

此过程需要几秒钟。我不希望用户在正常屏幕上等待,所以我在FirstStart活动中放置了一个进度条。它在RegistrationIntentService启动之前被调用并启动。

注册意向服务完成后,我想停止FirstStart中的进度条并完成注册意向服务以及FirstStart活动。

那么如何在RegistrationIntentService结束时完成FirstStart Activity? 或者,当RegistrationIntentService完成时,有没有办法重新进入FirstStart活动?

1 个答案:

答案 0 :(得分:2)

  

那么如何在我的最后完成FirstStart活动   RegistrationIntentService?

显然,必须建立FirstStart和RegistrationIntentService之间的通信。实现目标的最快方法是:

  • 使用FirstStart方法在registerReceiver()中注册BroadcastReceiver。其次,一旦完成RegistrationIntentService内的所有工作,您唯一需要做的就是来自服务的sendBroadcast()。请记住IntentFilter并设置了适当的操作,以便RegistrationIntentService发送的广播与BroadcastReceiver
  • 中已注册的FirstStart相匹配
  • 基本上与第一个建议相同,但是使用LocalBroadcastManager常规广播和广播与LocalBroadcastManager之间的区别在于,在后一种情况下,广播消息仅对您的应用程序的过程可见。在前者中,广播可能被不同的应用程序截获(如果没有权限受到限制)
  • 使用一些开源商品,例如绿色机器人的EventBus,它在广播方面基本上在技术上是相同的,但使用您创建的自定义对象。
  

或者有没有办法重新进入FirstStart活动   RegistrationIntentService已完成?

尽管如此,基于广播的沟通是让“活动与服务对话”的方式。

希望有所帮助:)