Я новичок в android. Я пытаюсь использовать AIDL. Что я пытаюсь взять начальное значение i.e 0 из Textview и tryng, чтобы увеличить его значение, вызвав метод, определенный в файле помощи (с использованием службы.) Но TextView не обновляется при нажатии кнопки. Просьба помочь. Вот мой код.Как использовать службы AIDL для обновления значения счетчика?
CounterService.aidl
package com.example.counter;
interface CounterService {
int updateCounter(in int var);
}
CounterServ.java (услуга Разоблачение)
пакет com.example.counter;
public class CounterServ extends Service {
@Override
public void onCreate() {
super.onCreate();
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return new CounterService.Stub() {
@Override
public int updateCounter(int var) throws RemoteException {
// TODO Auto-generated method stub
return var + 1;
}
};
}
@Override
public void onDestroy() {
super.onDestroy();
}
}
Активность пользователя с использованием службы.
общественный класс MainActivity расширяет активность {
CounterService myservice;
AdditionServiceConnection connection;
class AdditionServiceConnection implements ServiceConnection {
public void onServiceConnected(ComponentName name, IBinder Service) {
myservice = CounterService.Stub.asInterface(Service);
Toast.makeText(MainActivity.this, "Service connected", Toast.LENGTH_LONG)
.show();
}
public void onServiceDisconnected(ComponentName name) {
myservice = null;
Toast.makeText(MainActivity.this, "Service connected", Toast.LENGTH_LONG)
.show();
}
}
private void initService() {
connection = new AdditionServiceConnection();
Intent i = new Intent();
i.setClassName("com.example",com.example.counter.MainActivity.class.getName());
boolean ret = bindService(i, connection, Context.BIND_AUTO_CREATE);
}
private void releaseService() {
unbindService(connection);
connection = null;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initService();
Button update = (Button)findViewById(R.id.button1);
update.setOnClickListener(new View.OnClickListener() {
TextView value=(TextView)findViewById(R.id.textView1);
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
int val,res=-1;
val=Integer.parseInt(value.getText().toString());
try{
res=myservice.updateCounter(val);
}
catch(Exception e)
{e.printStackTrace();}
value.setText(res);
}
});
}
protected void onDestroy() {
releaseService();
}
}
Нет .. Это не сработало. –
Определите свой текст как экземпляр класса (глобально), инициализируйте его в методе onCreate() вместо setOnClickListener() и попробуйте ... Надеюсь, это поможет –
Я думаю, что проблема связана с AIDL, потому что я даже не получаю тосты, заявляя, Сервис подключен "в initService(). –