Android建立能與Activity進行相互通信的本地服務

MyService.java

[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 "傳智播客";  

    }  

      

    @Override  

    public 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

[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() {            

            @Override  

            public void onClick(View v) {  

                TextView resultView = (TextView) findViewById(R.id.result);  

                resultView.setText(myservice.getName(56));  

            }  

        });  

    }  

      

    private final class MyServiceConnection implements ServiceConnection{  

        @Override  

        public void onServiceConnected(ComponentName name, IBinder service) {  

            myservice = (IService)service;  

        }  

  

        @Override  

        public void onServiceDisconnected(ComponentName name) {  

            myservice = null;  

        }  

    }  

  

    @Override  

    protected void onDestroy() {  

        unbindService(conn);  

        super.onDestroy();  

    }  

      

}  

 

IService.java

[java]  

package cn.itcast.service;  

  

public interface IService {  

    public String getName(int id);  

}  

 

 

[html]  

<?xml version="1.0" encoding="utf-8"?>  

<manifest xmlns:android="https://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>  www.aiwalls.com

                <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>   

 

 

You May Also Like