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

来源:互联网 发布:复旦cpu卡算法 编辑:程序博客网 时间:2024/05/17 14:16

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;//返回当前服务的实例}}@Overridepublic 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() {@Overridepublic 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() {@Overridepublic void onServiceDisconnected(ComponentName name) {bound =false;}@Overridepublic 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>



0 0