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

前端之家收集整理的这篇文章主要介绍了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;
        }
    };
}

}

这是我的清单文件

在此先感谢您的帮助!

最佳答案
您必须在两个活动中使用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();

猜你在找的Android相关文章