其他分享
首页 > 其他分享> > android-如何将参数从活动传递到服务…当用户停止服务时

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