我在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活动?
答案 0 :(得分:2)
那么如何在我的最后完成FirstStart活动 RegistrationIntentService?
显然,必须建立FirstStart和RegistrationIntentService之间的通信。实现目标的最快方法是:
FirstStart
方法在registerReceiver()
中注册BroadcastReceiver。其次,一旦完成RegistrationIntentService
内的所有工作,您唯一需要做的就是来自服务的sendBroadcast()
。请记住IntentFilter
并设置了适当的操作,以便RegistrationIntentService
发送的广播与BroadcastReceiver
FirstStart
相匹配
LocalBroadcastManager
常规广播和广播与LocalBroadcastManager
之间的区别在于,在后一种情况下,广播消息仅对您的应用程序的过程可见。在前者中,广播可能被不同的应用程序截获(如果没有权限受到限制)或者有没有办法重新进入FirstStart活动 RegistrationIntentService已完成?
尽管如此,基于广播的沟通是让“活动与服务对话”的方式。
希望有所帮助:)