package org.android.textbook.lesson2.aidlservicesample;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity implements OnClickListener {
private Intent startIntent = null;
private ISampleInterface mService = null;
private ServiceConnection mServiceConnection = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName name) {
Log.i("koba","onServiceDisconnected");
mService = null;
}
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
Log.i("koba","onServiceConnected");
mService = ISampleInterface.Stub.asInterface(service);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
((Button)findViewById(R.id.button1)).setOnClickListener(this);
((Button)findViewById(R.id.button2)).setOnClickListener(this);
((Button)findViewById(R.id.button3)).setOnClickListener(this);
startIntent = new Intent();
startIntent.setClass(this, AIDLService.class);
startService(startIntent);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.button1:
Intent bindIntent = new Intent();
bindIntent.setClass(this, AIDLService.class);
bindService(bindIntent,mServiceConnection,Context.BIND_AUTO_CREATE);
break;
case R.id.button2:
if(mService != null){
try {
mService.doSomething(123);
} catch (RemoteException e) {
e.printStackTrace();
}
}
break;
case R.id.button3:
unbindService(mServiceConnection);
break;
}
}
@Override
protected void onPause() {
super.onPause();
stopService(startIntent);
}
}