在我正在制作的应用程序中,我想在一个活动中启动一个意图
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);
第二段代码将在与第一段代码完全无关的时间被调用。
答案 0 :(得分:4)
好吧,假设您只希望一次运行此服务的一个实例,您可以在服务类中保存一个静态变量并从任何地方访问它。实施例;
public class ToonService extends Service{
public static ToonService toonService;
public ToonService(){
toonService = this;
}
...
}
ToonService的构造函数现在将创建的实例存储在静态变量toonService
中。现在,您可以从班级的任何位置访问该服务。以下示例;
ToonService.toonService.stopSelf();
您还可以通过让类存储运行实例的静态List
来处理多个实例,而不仅仅是单个实例。 It is worth noting,当您告知服务停止时,您只是请求它已停止。最终,Android操作系统将确定何时关闭。
答案 1 :(得分:0)
当然,您可以从其他活动关闭服务。
方法-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:按照以下步骤操作。