package com.jiahaoliuliu.android.services.bounded;
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.widget.Button;
import android.widget.Toast;
public class AndroidWatcher extends Activity {
/** Called when the activity is first created. */
Button bindService;
Button unbindService;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
bindService = (Button)findViewById(R.id.bindService);
bindService.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
doBindService();
}
});
unbindService = (Button)findViewById(R.id.unbindService);
unbindService.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
doUnbindService();
}
});
Log.i("AndroidWatcher", "onCreate");
Toast.makeText(this, "onCreate", Toast.LENGTH_SHORT).show();
}
private LocalService mBoundService;
private boolean mlsBound = false;
private ServiceConnection mConnection = new ServiceConnection() {
public void onServiceConnected (ComponentName className, IBinder service) {
/**
* This is called when the connection with the service has been
* established, giving us the service object we can use to
* interact with the service. Because we have bound to a explicit
* service that we know is running in our own process, we can
* cast its IBinder to a concrete class and directly access it
*/
mBoundService = ((LocalService.LocalBinder)service).getService();
//Tell the user about this for our demo.
/*
Toast.makeText(AndroidWatcher.this,
"Service Connected", Toast.LENGTH_SHORT).show();
*/
}
public void onServiceDisconnected (ComponentName className) {
/**
* This is called when the connection with the service has been
* unexpectedly disconnected -- that is, its process crashed.
* Because it is running in our same process, we should never
* see this happen
*/
mBoundService = null;
/*Toast.makeText(AndroidWatcher.this,
"Service Disconnected", Toast.LENGTH_LONG).show();
*/
}
};
void doBindService() {
/**
* Establish a connection with the service. We use an explicit
* class name because we want a specific service implementation that
* we know will be running in our own process (and thus won't be
* supporting component replacement by other applications
*/
bindService(new Intent (AndroidWatcher.this,
LocalService.class), mConnection, Context.BIND_AUTO_CREATE);
mlsBound = true;
}
void doUnbindService() {
if (mlsBound) {
//Detach out existing connection
unbindService (mConnection);
mlsBound = false;
}
}
}
No comments:
Post a Comment