Java Android-停止来自其他类的服务

Java Android-停止来自其他类的服务,java,android,android-intent,android-service,Java,Android,Android Intent,Android Service,在我正在制作的应用程序中,我希望在一个活动中启动一个意图 Intent toonService = new Intent(Login.this, ToonService.class); toonService.putExtra("toonName", result.getName()); Login.this.startService(toonService); 下面的代码会关闭我刚才打开的意图吗?如果不是的话,我怎么能把它送到 Intent toonService = new Intent(

在我正在制作的应用程序中,我希望在一个活动中启动一个意图

Intent toonService = new Intent(Login.this, ToonService.class);
toonService.putExtra("toonName", result.getName());
Login.this.startService(toonService);
下面的代码会关闭我刚才打开的意图吗?如果不是的话,我怎么能把它送到

Intent toonService = new Intent(MainActivity.this,ToonService.class);
MainActivity.this.stopService(toonService);

第二段代码将在与第一段代码完全无关的时间被调用。

好吧,假设您一次只想运行此服务的一个实例,您可以在服务类中保存一个静态变量,并从任何地方访问它。榜样

public class ToonService extends Service{

    public static ToonService toonService;

    public ToonService(){
        toonService = this;
    }
    ...

}
ToonService的构造函数现在将创建的实例存储在静态变量ToonService中。现在,您可以从类的任何位置访问该服务。下面的例子

ToonService.toonService.stopSelf();

您还可以通过让类存储运行实例的静态列表来处理多个实例,而不仅仅是单个实例,当您告诉一个服务停止时,您只是请求它停止。最终,Android操作系统将决定何时关闭。

好吧,假设您一次只想运行此服务的一个实例,您可以在服务类中保存一个静态变量,并从任何地方访问它。榜样

public class ToonService extends Service{

    public static ToonService toonService;

    public ToonService(){
        toonService = this;
    }
    ...

}
ToonService的构造函数现在将创建的实例存储在静态变量ToonService中。现在,您可以从类的任何位置访问该服务。下面的例子

ToonService.toonService.stopSelf();

您还可以通过让类存储运行实例的静态列表来处理多个实例,而不仅仅是单个实例,当您告诉一个服务停止时,您只是请求它停止。最终,Android操作系统将决定何时关闭该服务。

您肯定可以通过其他活动关闭该服务

方法1:执行以下步骤 1.在活动1中编写一个返回该活动引用的方法。 2.在活动1中编写关闭服务的方法。 3.在Activity2中,调用第一个方法并获取引用。使用该引用调用第二个方法

1. private static Context context=this;
   public static  Context getContext(){
        return context;
   }

2. public void stop(){
       //stop the service here
   }

3.  In activity 2
     Activity context=Activity1.getContext();
     context.stop();
方法2:遵循以下步骤

在Activity1中将BroadcastReceiver作为内部类编写。在onReceive中,停止服务。 广播第二个活动的意图。
当然,您可以从其他活动中关闭服务

方法1:执行以下步骤 1.在活动1中编写一个返回该活动引用的方法。 2.在活动1中编写关闭服务的方法。 3.在Activity2中,调用第一个方法并获取引用。使用该引用调用第二个方法

1. private static Context context=this;
   public static  Context getContext(){
        return context;
   }

2. public void stop(){
       //stop the service here
   }

3.  In activity 2
     Activity context=Activity1.getContext();
     context.stop();
方法2:遵循以下步骤

在Activity1中将BroadcastReceiver作为内部类编写。在onReceive中,停止服务。 广播第二个活动的意图。
谢谢我会试试这个,我不认为公共静态toonService是有效的。它错过了type@JoshM-完全正确,斑点很好。我会纠正它。不起作用…你不能停止ToonService。ToonService你必须停止一个意图。@user3293629-答案已修改,试一试。ToonService.ToonService.stopSelf;谢谢我会试试这个,我不认为公共静态toonService是有效的。它错过了type@JoshM-完全正确,斑点很好。我会纠正它。不起作用…你不能停止ToonService。ToonService你必须停止一个意图。@user3293629-答案已修改,试一试。ToonService.ToonService.stopSelf;什么时候调用getContext方法?因为stop是一个非静态方法,我们需要该类引用来调用该方法。因此,为了获得该类引用,我们使用gerContext方法。例如:Activity1.getContext.stop。我什么时候调用getContext方法?因为stop是一个非静态方法,我们需要该类引用来调用该方法。因此,为了获得该类引用,我们使用gerContext方法。例如:Activity1.getContext.stop。