服务android
2016-05-05 21:02
447 查看
绑定服务:
下面是一个itheima的代码。关于绑定的;
MainActivity.java
MystartService extents Service{ public IBindle onBind(Intent intent){ return null; } }
Intent intent1 = new Intent(MainActivity.this,MyStartService.class); startService(intent1); <service android:name="con.sdingba.su.xxxx"/>
=绑定服务
绑定服务,这样可以调用服务里面的方法,Intent intent = new Intent(this,MyService.class); bindService(intent, null, BIND_AUTO_CREATE);
下面是一个itheima的代码。关于绑定的;
MainActivity.java
package com.itheima.servicelife; 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; public class MainActivity extends Activity { private MyConn conn ; private IMiddlePerson mp; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } //绑定服务 public void bind(View view){ //3.activity采用绑定的方式去开启服务。 Intent intent = new Intent(this,MyService.class); conn = new MyConn(); bindService(intent, conn, BIND_AUTO_CREATE); } //解除绑定服务 public void unbind(View view){ unbindService(conn); } @Override protected void onDestroy() { System.out.println("啊啊啊,我是activity,我挂了"); super.onDestroy(); } //调用服务里面的方法。 public void call(View view){ //5.通过中间人调用服务里面的方法。 mp.callMethodInService(55); } private class MyConn implements ServiceConnection{ //4. 当服务被连接的时候调用 服务别成功 绑定的时候调用 @Override public void onServiceConnected(ComponentName name, IBinder service) { System.out.println("在activity里面成功得到了中间人"); mp = (IMiddlePerson) service; ///**********//// } //当服务失去连接的时候调用(一般进程挂了,服务被异常杀死) @Override public void onServiceDisconnected(ComponentName name) { } } } MyService.java package com.itheima.servicelife; import android.app.Service; import android.content.Intent; import android.os.Binder; import android.os.IBinder; import android.widget.Toast; public class MyService extends Service { //2.实现服务成功绑定的代码 ,返回一个中间人。 @Override public IBinder onBind(Intent arg0) { System.out.println("服务被成功绑定了。。。。"); return new MiddlePerson(); } @Override public boolean onUnbind(Intent intent) { System.out.println("onunbind"); return super.onUnbind(intent); } @Override public void onCreate() { System.out.println("oncreate"); super.onCreate(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { System.out.println("onstartcommand"); return super.onStartCommand(intent, flags, startId); } @Override public void onDestroy() { System.out.println("ondestory"); super.onDestroy(); } ** * 这是服务里面的一个方法 */ public void methodInService(){ Toast.makeText(this, "哈哈,服务给你办好了暂住证。", 0).show(); } //1.第一步服务要暴露方法 必须要有一个中间人 private class MiddlePerson extends Binder implements IMiddlePerson{ //实现接口,这样可以把类定义为private,,这样既安全,而且外部可以访问类中的函数功能 /** * 代办暂住证 * @param money 给钱 50块钱以上才给办。 */ public void callMethodInService(int money){ if(money>=50){ methodInService(); }else{ Toast.makeText(getApplicationContext(), "多准备点钱。", 0).show(); } } /** * 陪领导打麻将 */ public void playMajiang(){ System.out.println("陪领导打麻将。"); } } } IMiddlePerson.java
package com.itheima.servicelife; /** * 中间人的接口定义 * */ public interface IMiddlePerson { /** * 代办暂住证 * @param money */ public void callMethodInService(int money); }
相关文章推荐
- 去除android控件滑动的时候出现的阴影
- Android Studio快捷键
- 解决android中listview中嵌套checkbox滑动时checkbox状态改变问题
- android studio 包依赖
- Android打开输入法和关闭输入法
- android studio 多渠道打包
- Android Fragment 真正的完全解析(上)
- android:全屏设置 + 去标题 + 只去程序标题栏 (应用和activity设置)
- android studio 签名
- Android内存泄露分析和处理
- android 自学日记(六) ——SAX解析中换行问题解决
- Android Studio Gradle编译报input jar file is specified twice
- Android 文件储存
- 关于 MotionEvent 的笔记
- android自定义View之重写View来实现全新的控件
- Android逆向小试牛刀(破解阅读软件广告)
- Android开发拖动条SeekBar的使用
- 【Android Studio快捷键】之代码提示
- Android开机动画
- Android里面的自定义适配器