使用Messenger类绑定服务显示时间

来源:互联网 发布:python args 编辑:程序博客网 时间:2024/05/02 19:20

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类,内部类IncomingHandler类继承Handler类

public class CurrentTimeService extends Service {public static final int CURRENT_TIME = 0;private class IncomingHandler extends Handler{@Overridepublic void handleMessage(Message msg) {if(msg.what==CURRENT_TIME){Time time = new Time();//创建Time对象time.setToNow();//设置时间为当前时间String currentTime = time.format("%Y-%m-%d %H:%M:%S");//设置时间格式Toast.makeText(CurrentTimeService.this, currentTime, Toast.LENGTH_SHORT).show();}else{super.handleMessage(msg);}}}@Overridepublic IBinder onBind(Intent intent) {Messenger messenger = new Messenger(new IncomingHandler());return messenger.getBinder();}}

3、MainActivity

public class MainActivity extends Activity {Messenger messenger;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,connection,BIND_AUTO_CREATE);//绑定服务if(bound){Message message = Message.obtain(null, CurrentTimeService.CURRENT_TIME, 0, 0);                    try {                        messenger.send(message);                    } catch (RemoteException e) {                        e.printStackTrace();                    }}}});    }    @Override    protected void onStop() {    super.onStop();    if(bound){    bound = false;    unbindService(connection);//解绑定    }    }    private ServiceConnection connection = new ServiceConnection(){    public void onServiceConnected(android.content.ComponentName name, android.os.IBinder service) {    messenger = new Messenger(service);
<span style="white-space:pre"></span>bound = true;    };    public void onServiceDisconnected(android.content.ComponentName name) {    messenger = null;    bound = false;    }    };}


4AndroidManifest.xml

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





0 0