我有一个带有复选框的活动:如果未选中该复选框,则停止该服务.这是我的活动代码的一部分:
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-如何将参数从活动传递到服务…当用户停止服务时所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)