package com.camnter.newlife.ui.activity.ipc; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.os.Bundle; import android.os.IBinder; import android.os.RemoteException; import android.widget.TextView; import com.camnter.newlife.R; import com.camnter.newlife.aidl.IPushMessage; import com.camnter.newlife.aidl.PushMessageService; import com.camnter.newlife.core.activity.BaseAppCompatActivity; /** * Description:AIDLActivity * Created by:CaMnter * Time:2015-11-17 16:28 */ public class AIDLActivity extends BaseAppCompatActivity { private static final String TAG = "AIDLActivity"; private TextView aidlTV; private String pushMessage; private IPushMessage iPushMessage; private ServiceConnection connection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { /* * 这里的 service 不是 Binder对象 * 而是 BinderProxy对象 * 不能 直接转为Binder( (Binder)service ),是错误的。 */ AIDLActivity.this.iPushMessage = IPushMessage.Stub.asInterface(service); try { AIDLActivity.this.pushMessage = AIDLActivity.this.iPushMessage.onMessage(); AIDLActivity.this.aidlTV.setText(AIDLActivity.this.pushMessage); } catch (RemoteException e) { e.printStackTrace(); } } @Override public void onServiceDisconnected(ComponentName name) { AIDLActivity.this.iPushMessage = null; } }; /** * Fill in layout id * * @return layout id */ @Override protected int getLayoutId() { return R.layout.activity_aidl; } /** * Initialize the view in the layout * * @param savedInstanceState savedInstanceState */ @Override protected void initViews(Bundle savedInstanceState) { this.aidlTV = (TextView) this.findViewById(R.id.aidl_tv); } /** * Initialize the View of the listener */ @Override protected void initListeners() { } /** * Initialize the Activity data */ @Override protected void initData() { Intent intent = new Intent(this, PushMessageService.class); this.startService(intent); this.bindService(intent, this.connection, Context.BIND_AUTO_CREATE); } @Override protected void onDestroy() { this.unbindService(this.connection); super.onDestroy(); } }