android-如何将参数从活动传递到服务…当用户停止服务时

android-如何将参数从活动传递到服务…当用户停止服务时,第1张

概述我有一个带有复选框的活动:如果未选中该复选框,则停止该服务.这是我的活动代码的一部分:IntentserviceIntent=newIntent();serviceIntent.setAction("com.android.savebattery.SaveBatteryService");if(*unchecked*){serviceIntent.putExtra("user_st

我有一个带有复选框的活动:如果未选中该复选框,则停止该服务.这是我的活动代码的一部分:

    Intent serviceIntent = new Intent();    serviceIntent.setAction("com.androID.savebattery.SaveBatteryService");    if (*unchecked*){        serviceIntent.putExtra("user_stop", true);        stopService(serviceIntent);

当我停止服务时,我在服务上传递了一个参数“ user_stop”,该用户一直是要停止该服务而不是系统(对于内存不足).

现在,我必须在我的服务的无效onDestroy中读取变量“ user_stop”:

public voID onDestroy() {super.onDestroy();Intent recIEvedIntent = getIntent(); boolean userStop= recIEvedIntent.getBooleanExtra("user_stop");    if (userStop) {       *** notification code ****

但这不起作用!我不能在onDestroy中使用getIntent()!

有什么建议吗?

谢谢

西蒙妮

解决方法:

我看到两种方法:

>使用共享首选项.
>使用本地广播.

第一种方法是一种简单直接的方法.但这不是很灵活.基本上,您会这样做:

>一个将“用户停止”共享首选项设置为true.
> b.停止服务
> c.在onDestroy服务中,检查“用户停止”首选项的值是什么.

另一种方法是更好的方法,但是需要更多代码.

>一个在您的服务类中定义一个字符串常量:

   

final public static string USER_Stop_SERVICE_REQUEST = "USER_Stop_SERVICE".

> b.创建一个内部类broadcastReceiver类:

public class UserStopServiceReceiver extends broadcastReceiver  {      @OverrIDe      public voID onReceive(Context context, Intent intent)      {          //code that handles user specific way of stopPing service       }  }

  
> c.在onCreate或onStart方法中注册此接收器:

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

> d.在任何您想停止服务的地方:

context.sendbroadcast(new Intent(USER_Stop_SERVICE_REQUEST));

请注意,您可以使用此方法通过Intent传递任何自定义参数.

总结

以上是内存溢出为你收集整理的android-如何将参数从活动传递到服务…当用户停止服务时全部内容,希望文章能够帮你解决android-如何将参数从活动传递到服务…当用户停止服务时所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1092680.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存