如何从一个活动传递参数给服务......当用户停止服务 [英] How to pass a parameter from an activity to a service...when the user stop the service

查看:206
本文介绍了如何从一个活动传递参数给服务......当用户停止服务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个复选框的活动:如果chekbox的勾选,那么停止该服务。这是我的活动code的一个片段:

I have an activity with a checkbox: if the chekbox is unchecked then stop the service. this is a snippet of my activity code:

    Intent serviceIntent = new Intent();
    serviceIntent.setAction("com.android.savebattery.SaveBatteryService");

    if (*unchecked*){
        serviceIntent.putExtra("user_stop", true);
        stopService(serviceIntent);

当我停止服务,我传递一个参数user_stop在那一直是用户停止它,而不是系统(低内存)的服务的话。

when I stop the service I pass a parameter "user_stop" to say at the service that has been a user to stop it and not the system (for low memory).

现在我要读我的服务空白的onDestroy变量user_stop:

now I have to read the variable "user_stop" in void onDestroy of my service:

public void onDestroy() {
super.onDestroy();

Intent recievedIntent = getIntent(); 
boolean userStop= recievedIntent.getBooleanExtra("user_stop");

    if (userStop) {
       *** notification code ****

,但它不工作!在我的onDestroy不能使用getIntent()!

but it doesn't work! I can't use getIntent() in onDestroy!

任何建议?

感谢

西蒙尼

推荐答案

我认为这样做的两种方式:

I see two ways of doing this:

  1. 在使用共享preferences。
  2. 在利用当地的广播。

第一种方法是一种简单而直接的方式。但它不是很灵活。基本上,你做的:


The first approach is an easy and straightforward way. But it is not very flexible. Basically you do:

  • 一个。设置用户停止共享preference为true。
  • 乙。停止服务
  • ℃。在你的onDestroy服务检查什么是用户停止preference值。

另一种方法是一个更好的办法,但需要更多的code。

The other approach is a better way but requires more code.

  • 一个。定义一个字符串常量在您的服务类:
final public static string USER_STOP_SERVICE_REQUEST = "USER_STOP_SERVICE".

  • 乙。创建一个内部类BroadcastReceiver的类:

    • b. Create an inner class BroadcastReceiver class:

      public class UserStopServiceReceiver extends BroadcastReceiver  
      {  
          @Override  
          public void onReceive(Context context, Intent intent)  
          {  
              //code that handles user specific way of stopping service   
          }  
      }
      

    • ℃。注册该接收机的onCreate或OnStart方法:

    • c. Register this receiver in onCreate or onStart method:

      registerReceiver(new UserStopServiceReceiver(),  newIntentFilter(USER_STOP_SERVICE_REQUEST));

    • Ð。从你要停止你的服务的任何地方:

    • d. From any place you want to stop your service:

      context.sendBroadcast(new Intent(USER_STOP_SERVICE_REQUEST));

    • 请注意,您可以通过意向使用这种方法传递任何自定义的参数。

      Note that you can pass any custom arguments through Intent using this approach.

      这篇关于如何从一个活动传递参数给服务......当用户停止服务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆