四大组件---Service
来源:互联网 发布:软件测试行业发展前景 编辑:程序博客网 时间:2024/04/28 06:58
Service:
后台运行,优先级高于Activity,在主线程中运行,不能做耗时操作(可以在Service中开一个线程在里面进行耗时操作)。
类型:
1.本地服务(Local Service)---<应用程序内部>
startService(启动) -- stopService/stopSelf/stopSelfResult(停止)
Start方式特点:
<服务跟启动源没有联系,无法的到服务对象
bindService(绑定) / unbindService(解绑)
Bind方式特点:
<1.通过Ibinder接口实例,返回一个ServiceConnection对象给启动源
<2.通过ServiceConnection对象的相关方法可以得到Service对象
2.远程服务(Remote Service)---<Android系统内部的应用程序之间>
定义IBinder接口
Demo:
Start方式:
创建MyStartService.java 继承 Service并实现方法:
public class MyStartService extends Service { @Override public void onCreate() { super.onCreate(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { return super.onStartCommand(intent, flags, startId); } @Override public void onDestroy() { super.onDestroy(); } @Nullable @Override public IBinder onBind(Intent intent) { return null; }}
Mainfest里添加Service
<service android:name=".MyStartService"/>
设置点击事件:
public void Click(View v){ switch (v.getId()){ case R.id.start: intent1 = new Intent(MainActivity.this,MyStartService.class); startService(intent1); break; case R.id.stop: startService(intent1); break; }其中intent1声明在外面了,下面有完整代码。
onCreat()在程序开始时调用一次,可在其下写入初始化操作。
Bind方式:
新建MyBindService继承Service:
public class MyBindService extends Service { @Override public void onCreate() { super.onCreate(); } public class MyBinder extends Binder { //Binder继承了IBinder接口,重写一个 public MyBindService getService() { return MyBindService.this; //返回整个服务对象 } } @Nullable @Override public IBinder onBind(Intent intent) { return new MyBinder(); //将MyBinder作为onBind的返回值 } @Override public boolean onUnbind(Intent intent) { return super.onUnbind(intent); } @Override public void onDestroy() { super.onDestroy(); } public void Play(){ Log.i("info","播放"); } public void Pause(){ Log.i("info","暂停"); } public void Previous(){ Log.i("info","上一首"); } public void Next(){ Log.i("info","下一首"); }}
Mainfest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.administrator.servicedemo1"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <service android:name=".MyStartService"/> <service android:name=".MyBindService"/> </application></manifest>
MainActivity.java
public class MainActivity extends AppCompatActivity { Intent intent1; Intent intent2; MyBindService service; ServiceConnection con = new ServiceConnection() { @Override//当启动源与Service成功连接后自动调用 public void onServiceConnected(ComponentName name, IBinder binder) { service = ((MyBindService.MyBinder)binder).getService(); } @Override//当启动源跟Service的连接意外丢失时调用此方法 public void onServiceDisconnected(ComponentName name) { } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void Click(View v){ switch (v.getId()){ case R.id.start: intent1 = new Intent(MainActivity.this,MyStartService.class); startService(intent1); break; case R.id.stop: startService(intent1); break; case R.id.bind: intent2 = new Intent(MainActivity.this,MyBindService.class); bindService(intent2,con, Service.BIND_AUTO_CREATE); break; case R.id.play: service.Play(); break; case R.id.pause: service.Pause(); break; case R.id.previous: service.Previous(); break; case R.id.next: service.Next(); break; case R.id.unbind: unbindService(con); break; } }}
0 0
- 四大组件之Service
- Android四大组件----Service
- 四大组件之Service
- 四大组件之Service
- Android四大组件---Service
- 四大组件(Service)
- android四大组件service
- 四大组件之Service
- 四大组件之Service
- 四大组件之Service
- android四大组件---service
- 四大组件之Service
- 四大组件之service
- 四大组件之Service
- Service-四大组件之一
- android四大组件---Service
- 四大组件之Service
- 四大组件之Service
- 树形DP______TELE( POJ 1155 )
- position
- JRE与JDK的区别
- emmc启动过程--基于spec
- HTTP 状态码
- 四大组件---Service
- RocketMQ运维指令
- 奇奇怪怪的字符串循环同构问题
- Android抓去logcat信息的方法
- 如何使QLabel上显示的图片大小和QLabel自适应?
- Hive 的优化
- opengles之多重纹理与过程纹理
- Hibernate BaseDao
- 安卓开发之ListView(HorizontalListView)横向动态加载数据例子