读书人

Android中的跨过程回调

发布时间: 2013-03-04 17:22:12 作者: rapoo

Android中的跨进程回调

package com.example.easytabdemo;import android.app.Activity;import android.content.ComponentName;import android.content.Context;import android.content.Intent;import android.content.ServiceConnection;import android.graphics.PixelFormat;import android.graphics.drawable.Drawable;import android.os.Bundle;import android.os.IBinder;import android.os.RemoteException;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;import com.example.chirpdemo.ITest;import com.example.chirpdemo.ITestListener;import com.example.easytabdemo.SlideTabHost.TabSpec;public class MainActivity extends Activity {    final private static String TAG = "MainActivity";            final Intent myIntent = new Intent("com.pyk.les.IlongExistService");    private boolean startedService = false;    private ITest leservice = null;    ServiceConnection myServiceConnection = new ServiceConnection() {        @Override        public void onServiceConnected(ComponentName name, IBinder service) {            leservice = ITest.Stub.asInterface(service);                        try {                leservice.listen(new ITestListener.Stub() {                    @Override                    public void onFinished(int result) throws RemoteException {                    }                                    });            } catch (RemoteException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }        @Override        public void onServiceDisconnected(ComponentName name) {            leservice = null;            Log.i("aaaaaaaaaaaa", "onDisconnected:" + Thread.currentThread());        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        startedService = bindService(new Intent("com.my.IService"),                myServiceConnection, BIND_AUTO_CREATE);        Log.i("aaaaaaaaaaaa", "bindService:" + Thread.currentThread());                Button bt = (Button)this.findViewById(R.id.bt1);        bt.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View arg0) {                if ( startedService ) {                    if ( null != leservice ) {                        try {                            leservice.setValue(leservice.getValue() + 1);                        } catch (RemoteException e) {                            e.printStackTrace();                        }                    }                }            }        });                view.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View arg0) {                if ( startedService ) {                    if ( null != leservice ) {                        try {                            mEditText.setText(leservice.getValue() + "");                        } catch (RemoteException e) {                            e.printStackTrace();                        }                    }                }            }        });    }    @Override    public void onStart() {        super.onStart();        Log.i("aaaaaaaa", "onStart");    }    @Override    public void onPause() {        super.onPause();        Log.i("aaaaaaaa", "onPause");    }    @Override    public void onResume() {        super.onResume();        Log.i("aaaaaaaa", "onResume");    }    @Override    public void onStop() {        super.onStop();        Log.i("aaaaaaaa", "onStop");    }    @Override    protected void onDestroy() {        if (startedService) {            unbindService(myServiceConnection);        }        Log.i(TAG, "onDestroy");        super.onDestroy();    }}


在以上代码中ITestListener为跨进程回调接口

读书人网 >Android

热点推荐