我的服务被正确地绑定到我的第一个活动但是当我尝试将它绑定到第二个活动时它不起作用
这是我的第一个活动的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();