继承Binder类绑定服务显示时间

1、布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/current_time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="当前时间"
        android:textColor="@android:color/black"
        android:textSize="25dp" />

</LinearLayout>

2、创建CurrentTimeService类,继承Service类,内部类LocalBinder继承Binder类

public class CurrentTimeService extends Service {
	private final IBinder binder = new LocalBinder();
	public class LocalBinder extends Binder{
		CurrentTimeService getService(){
			return CurrentTimeService.this;//返回当前服务的实例
		}
	}
	@Override
	public IBinder onBind(Intent arg0) {
		return binder;
	}
	public String getCruurentTime(){
		Time time = new Time();//创建Time对象
		time.setToNow();//设置时间为当前时间
		String currentTime = time.format("%Y-%m-%d %H:%M:%S");//设置时间格式
		return currentTime;
	}
}

3、MainActivity

public class MainActivity extends Activity {

	CurrentTimeService cts;
	boolean bound;
	
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    @Override
    protected void onStart() {
    	super.onStart();
    	Button button = (Button)findViewById(R.id.current_time);
    	button.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				Intent intent = new Intent(MainActivity.this, CurrentTimeService.class);
				bindService(intent,sc,BIND_AUTO_CREATE);//绑定服务
				if(bound){//如果绑定则显示当前时间
					Toast.makeText(MainActivity.this, cts.getCruurentTime(), Toast.LENGTH_SHORT).show();
				}
			}
		});
    }
    @Override
    protected void onStop() {
    	super.onStop();
    	if (bound) {
			bound = false;
			unbindService(sc);//解绑定
		}
    }
    private ServiceConnection sc = new ServiceConnection() {
		
		@Override
		public void onServiceDisconnected(ComponentName name) {
			bound =false;
		}
		
		@Override
		public void onServiceConnected(ComponentName name, IBinder service) {
			LocalBinder binder = (LocalBinder)service;//获得自定义的LocalBinder对象
			cts = binder.getService();//获得CurrentTimeService对象
			bound = true;
		}
	};
}

4、修改AndroidManifest.xml

<service android:name=".CurrentTimeService"></service>

继承Binder类绑定服务显示时间_第1张图片

继承Binder类绑定服务显示时间_第2张图片

你可能感兴趣的:(继承Binder类绑定服务显示时间)