package jp.mixi.sample.service;
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.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
public static final String TAG = MainActivity.class.getSimpleName();
private BoundService mBoundService;
// BoundService を扱う時のインタフェース
private ServiceConnection mConnection = new ServiceConnection() {
// 異常発生時の処理。ここで Bind してあったサービスへのリファレンスを切る
@Override
public void onServiceDisconnected(ComponentName name) {
Log.v(TAG, "onServiceDisconnected");
mBoundService = null;
}
// サービスへのバインドが完了した時のコールバック。ここでバインドしたサービスのインスタンスを得ることで、直接サービスのインスタンスを操作可能となる。
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
Log.v(TAG, "onServiceConnected");
mBoundService = ((BoundService.ServiceBinder) service).getService();
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button startService = (Button) findViewById(R.id.StartServiceButton);
Button stopService = (Button) findViewById(R.id.StopServiceButton);
Button bindService = (Button) findViewById(R.id.BindServiceButton);
Button unbindService = (Button) findViewById(R.id.UnbindServiceButton);
Button startIntentService = (Button) findViewById(R.id.IntentServiceButton);
startService.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
startService(new Intent(MainActivity.this, StartedService.class));
}
});
stopService.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
stopService(new Intent(MainActivity.this, StartedService.class));
}
});
bindService.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
bindService(new Intent(MainActivity.this, BoundService.class), mConnection, Context.BIND_AUTO_CREATE);
}
});
unbindService.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
unbindService(mConnection);
}
});
startIntentService.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
startService(new Intent(MainActivity.this, MyIntentService.class));
}
});
}
}