在Intent -Android

时间:2019-05-30 13:10:39

标签: android

在我的android应用程序中,我有一个名为 A 的活动。从 A 中,我调用了一个后台服务。在该服务onStartCommand中,我将做一些AsyncTask,并提出了转移到另一个活动B的意图。我受困的地方是

1。。调用Intent后如何停止服务本身?

编辑:我尝试致电StopSelf();,但没有结束我的服务。

2。。到达B后,后退按钮将不起作用。目前,如果按后退按钮,我仍然可以转到活动A。

我的意图

Intent dialogIntent = new Intent(UserLoginValidationService.this,SplashScreen.class);                                            
                        dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        dialogIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);                       
                        stopSelf();
                        startActivity(dialogIntent);

编辑:如何在服务中致电finishAffinity();

感谢您的帮助。

2 个答案:

答案 0 :(得分:7)

这可能是最好的方法。

  1. 创建意向服务。
  2. 从您开始的A Activity中注册本地BroadcastReceiver 服务。
  3. 从您的Intent服务进行广播,并在您的活动中接收它。
  4. 在那个BroadcastReceiver代码中做有需要的事情。

注意::在Activity onDestroy()方法中注销BroadcastReceiver。

stopSelf()确实停止了服务,但是可能花费很少的时间。您可以通过登录onDestroy()服务方法来对其进行交叉检查。

答案 1 :(得分:1)

1。调用Intent后如何停止服务本身?

您可以使用stopSelf()停止服务。

2。到达B后,后退按钮将不起作用。目前,如果按后退按钮,我仍然可以转到活动A。

如果要按后退按钮关闭应用程序,则应在“活动B”中打开以清除先前的活动。