У меня есть служба, которая имеет различные методы, и все, что они делают, это сообщение logcat, но эти методы, похоже, не вызываются, хотя я создал экземпляр этой службы в своей деятельности класс.
Мой класс Код услуги это-
Не удается вызвать методы службы из MainActivity
public class service extends Service {
IBinder ob=new My_Ibinder();
public class My_Ibinder extends Binder{
public service get_MyService(){
return service.this;
}
}
@Override
public void onCreate() {
super.onCreate();
Log.e("SERVICE CREATED","");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.e("SERVICE OnStartCommand","");
return super.onStartCommand(intent, flags, startId);
}
@Override
public IBinder onBind(Intent intent) {
Log.e("SERVICE onBind","");
return ob;
}
@Override
public void onDestroy() {
super.onDestroy();
Log.e("SERVICE DESTROYED","");
}
String data(){
Log.e("SERVICE data method","");
return "DATA SUCCESSFULLY TRANSFERRED";
}
public void ok(){
Log.e("SERVICE ok method","");
}
}
Вот методы, которые я называю это данные() и ОК().
Мой класс активности IS-
Button start,stop,data,check;
TextView tv;
service ser;
Boolean flag=false;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
start=(Button)findViewById(R.id.start);
check=(Button)findViewById(R.id.check);
stop=(Button)findViewById(R.id.stop);
data=(Button)findViewById(R.id.data);
tv=(TextView)findViewById(R.id.tv);
start.setOnClickListener(new OnClickListener(){public void onClick(View v){ bindService(new Intent(MainActivity.this,service.class),sc,Context.BIND_AUTO_CREATE); }});
stop.setOnClickListener(new OnClickListener(){public void onClick(View v){ unbindService(sc); flag=false; }});
data.setOnClickListener(new OnClickListener(){public void onClick(View v){ ser.ok();tv.setText(ser.data()); }});
check.setOnClickListener(new OnClickListener(){public void onClick(View v){ Log.e(""+flag,"sfsfsdfdssfsdffsdfs"); }});
}
private ServiceConnection sc=new ServiceConnection(){
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
My_Ibinder ob=(My_Ibinder)service;
ser=ob.get_MyService();
flag=true;
}
@Override
public void onServiceDisconnected(ComponentName name) {
flag=false;
ser=null;
}
};
При нажатии кнопки я не получаю сообщение LogCat. Ни из методов, которые мне нужно вызвать, ни из методов onCreate(), onBind() и onDestroy(), которые должны были быть вызваны, если служба успешно создана.
Я проверил запущенные процессы в настройках, и эта служба не существует.
Странно, если я запустил сервис с помощью startService (намерение), тогда он работает нормально (хотя я не могу с ним общаться). Я предполагаю, что есть некоторые проблемы с привязкой службы.
Просьба помочь.
Вы положили услугу в свой манифест? –
Да, я уже добавил –