微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android – 将服务绑定到多个活动

我的服务被正确地绑定到我的第一个活动但是当我尝试将它绑定到第二个活动时它不起作用
这是我的第一个活动的onresume和暂停的代码

  @Override
protected void onResume() {
    super.onResume();
    connection = new ServiceConnection() {
        @Override
        public void onServicedisconnected(ComponentName name) {
            service = null;
        }
        @Override
        public void onServiceConnected(ComponentName name,IBinder service) {
            shareInfos.this.service = (IService) service;
        }
    };
    bindService(new Intent(this,shareInfos.class),connection,Context.BIND_AUTO_CREATE);
}
@Override
protected void onPause() {
    super.onPause();
    if (service != null) {
        service = null;
        unbindService(connection);
    }
}

我对第二个活动做了同样的事情,但是当我尝试使用该服务时,它总是为空
这是我的第二个活动的代码

   @Override
protected void onResume() {
    super.onResume();
    connection = new ServiceConnection() {
        @Override
        public void onServicedisconnected(ComponentName name) {
            service = null;
        }
        @Override
        public void onServiceConnected(ComponentName name,Context.BIND_AUTO_CREATE);
}
@Override
protected void onPause() {
    super.onPause();
    if (service != null) {
        service = null;
        unbindService(connection);
    }
}

多数民众赞成是我服务的代码

public class ExampleService extends AbstractService {
private static final String SERVICE_NAME = "ExampleService";
public ExampleService() {
    super(SERVICE_NAME);
}
@Override
public AbstractRegistration getRegistration() {
    return new AbstractRegistration() {
        @Override
        public String getApplicationName() {
            return getResources().getString(R.string.application_name);
        }
        @Override
        public String getApplicationDescription() {
            return getResources().getString(R.string.application_description);
        }
        @Override
        public PendingIntent getApplicationSettings() {
            return PendingIntent.getActivity(getApplicationContext(),new Intent(getApplicationContext(),ExampleActivity.class),0);
        }
        @Override
        public boolean requiresstorage() {
            return true;
        }
        @Override
        public boolean requiresQueries() {
            return true;
        }
        @Override
        public boolean requiresRecognition() {
            return true;
        }
    };
}

}

这是我的清单文件

xsdkVersion="18" />
xsdkVersion="18" />

在此先感谢您的帮助!

最佳答案
您必须在两个活动中使用Service调用的相同对象.最好的方法是扩展Application类,您必须编写代码以启动服务并停止.然后您可以从任何活动访问该服务.

    public class AppController extends Application {

     private static AppController mInstance;
     private ExampleService service;
     public static synchronized AppController getInstance() {
            return mInstance;
     }

     @Override
     public void onCreate() {
        // Todo Auto-generated method stub
        super.onCreate();
    }
    public void startService(){
    //start your service

    }
    public void stopService(){
    //stop service
    }
    public ExampleService getService(){
    }
    }

现在从活动中获取服务

AppController.getInstance().getService();

原文地址:https://www.jb51.cc/android/431273.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐