Service学习总结
来源:互联网 发布:南京大数据公司有哪些 编辑:程序博客网 时间:2024/05/16 09:58
下面是平时学习中对Service的一些总结
http://note.youdao.com/yws/public/redirect/share?id=703f6407ff7a08bccb8ccd8cc7a1a107&type=false
http://note.youdao.com/yws/public/redirect/share?id=f5ce1c8a6fae5cc0335c4dbb946fae84&type=false
Messenger使用代码:
1.先创建一个远程服务
public class MessengerService extends Service { private static final int MSG_SUM = 0x110; public MessengerService() { } Messenger messenger = new Messenger(new Handler(){ @Override public void handleMessage(Message msgfromclient) { super.handleMessage(msgfromclient); //根据客户端发过来的消息创建一个message对象 Message msgtoclient = Message.obtain(msgfromclient); switch (msgfromclient.what){ case MSG_SUM: msgtoclient.what = MSG_SUM; try { Thread.sleep(2000); msgtoclient.arg2 = msgfromclient.arg1 + msgfromclient.arg2; //向客户端发送消息,replyto方法获得一个messenger对象 msgfromclient.replyTo.send(msgtoclient); }catch (RemoteException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } break; } } }); @Override public IBinder onBind(Intent intent) { //获得binder对象 return messenger.getBinder(); }}
同时要在清单文件注册,注意加上动作
<service android:name=".MessengerService" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="com.lxn.add"/> </intent-filter> </service>
然后我们创建客户端,
private static final String TAG = "MainActivity"; private static final int MSG_SUM = 0x110; boolean isBound = false; private Button mBtnAdd; private LinearLayout mLyContainer; //显示连接状态 private TextView mTvState; private int mA; private Messenger mService; private Messenger messenger = new Messenger(new Handler(){ @Override public void handleMessage(Message msgFromServer) { super.handleMessage(msgFromServer); switch (msgFromServer.what){ case MSG_SUM: TextView tv = (TextView) mLyContainer.findViewById(msgFromServer.arg1); tv.setText(tv.getText() + "=>" + msgFromServer.arg2); break; } } }); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTvState = (TextView) findViewById(R.id.id_tv_callback); mBtnAdd = (Button) findViewById(R.id.id_btn_add); mLyContainer = (LinearLayout) findViewById(R.id.id_ll_container); invokeBindService(); mBtnAdd.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int a = mA++; int b = (int) (Math.random()*100); TextView textview = new TextView(MainActivity.this); textview.setText(a + " + " + b + " = caculating ..."); textview.setId(a); mLyContainer.addView(textview); Message msgfromclient = Message.obtain(null, MSG_SUM, a, b); msgfromclient.replyTo = messenger; if(isBound){ try { mService.send(msgfromclient);//向服务器发消息 } catch (RemoteException e) { e.printStackTrace(); } } } }); } private void invokeBindService() { Intent intent = new Intent(); //绑定服务,远程服务必须指定action intent.setAction("com.lxn.add"); bindService(intent,conn,BIND_AUTO_CREATE); } ServiceConnection conn = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { mService = new Messenger(service); isBound = true; mTvState.setText("connected"); } @Override public void onServiceDisconnected(ComponentName name) { isBound = false; mService = null; mTvState.setText("disconnected"); } }; @Override protected void onDestroy() { super.onDestroy(); if(isBound){ unbindService(conn); isBound = false; } }}
0 0
- web service 学习总结
- Web Service学习总结
- service学习总结
- android service学习总结
- Service学习总结
- Web Service学习总结
- Web service学习总结
- Android-Service学习总结
- silverlight ria service 学习总结
- Android 中 Service 学习,总结
- Android Service 学习总结 1
- Android之Service学习总结
- android ApiDemo学习(一)service总结
- 【Android学习系列】Android- Service总结
- 安卓之service学习总结
- Android学习笔记(九):Service总结
- Binder,Service,进程间通信学习总结
- Android Service的学习和总结
- java常用线程池
- spring mvc注解详解
- 定义下拉框,枚举
- Android按钮单击事件的四种常用写法总结
- 多线程学习05-线程状态
- Service学习总结
- Github上的开源项目4
- STL源码笔记(10)—序列式容器之list
- unresolved external symbol _Winmain@16问题解决办法
- ThinkPad T440p如何默认F1~F12键
- uva 11582Colossal Fibonacci Numbers!
- 软件架构模式
- 云数据库memcached之热点key问题解决方案
- centos ab压力测试工具安装