android-如何将参数从活动传递到服务…当用户停止服务时
作者:互联网
我有一个带有复选框的活动:如果未选中该复选框,则停止该服务.这是我的活动代码的一部分:
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传递任何自定义参数.
标签:ondestroy,android-activity,parameters,android,service 来源: https://codeday.me/bug/20191023/1914222.html