Android建立能与Activity进行相互通信的本地服务MyService.javapackage cn.itcast.serviceimport android
Android建立能与Activity进行相互通信的本地服务
MyService.java
package cn.itcast.service;import android.app.Service;import android.content.Intent;import android.os.Binder;import android.os.IBinder;public class MyService extends Service {private Binder binder = new MyBinder();public String getName(int id){return "传智播客";}@Overridepublic IBinder onBind(Intent intent) {return binder;}private final class MyBinder extends Binder implements IService{public String getName(int id){return MyService.this.getName(23);}}}
MainActivity.java
package cn.itcast.service;import android.app.Activity;import android.content.ComponentName;import android.content.Intent;import android.content.ServiceConnection;import android.os.Bundle;import android.os.IBinder;import android.view.View;import android.widget.Button;import android.widget.TextView;public class MainActivity extends Activity { private MyServiceConnection conn; private IService myservice; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); conn = new MyServiceConnection(); Intent intent = new Intent(this, MyService.class); bindService(intent, conn, BIND_AUTO_CREATE); Button button = (Button) this.findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {TextView resultView = (TextView) findViewById(R.id.result);resultView.setText(myservice.getName(56));}}); } private final class MyServiceConnection implements ServiceConnection{@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {myservice = (IService)service;}@Overridepublic void onServiceDisconnected(ComponentName name) {myservice = null;} }@Overrideprotected void onDestroy() {unbindService(conn);super.onDestroy();} }
IService.java
package cn.itcast.service;public interface IService {public String getName(int id);}
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="cn.itcast.service" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".MainActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity><service android:name=".MyService"/> </application> <uses-sdk android:minSdkVersion="8" /></manifest>
