Android复习10【Service与Thread的区别、Service的生命周期、Service生命周期解析(相关方法详解、启动方式的不同、绑定)、音乐播放器+服务】
音乐播放器Android代码下载:https://wws.lanzous.com/ifqzihaxvij
目 录
Service与Thread的区别
Service的生命周期
Service生命周期解析(相关方法详解、启动方式的不同、绑定)
course1001
运行截图
AndroidManifest.xml
MainActivity.java
音乐播放器(course0902-wzg)
2020-04-21-星期二【第10周】
菜鸟教程---4.2.1 Service初涉【https://www.runoob.com/w3cnote/android-tutorial-intro.html】
老师讲了很多这篇文章。
Service与Thread的区别
Service的生命周期
Service生命周期解析(相关方法详解、启动方式的不同、绑定)
course1001
运行截图
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="cn.wangzg.course1001"><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/AppTheme"><serviceandroid:name=".MyService"android:enabled="true"android:exported="true"></service><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>
MainActivity.java
package cn.wangzg.course1001;import androidx.appcompat.app.AppCompatActivity;import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.util.Log;
import android.view.View;public class MainActivity extends AppCompatActivity {private static final String TAG = "MainActivity";private Intent intent;private MyService.MyBinder binder;//匿名内部类private ServiceConnection conn = new ServiceConnection() {@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {Log.d(TAG, "onServiceConnected: ");binder = (MyService.MyBinder) service;}@Overridepublic void onServiceDisconnected(ComponentName name) {Log.d(TAG, "onServiceDisconnected: ");binder = null;}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);intent = new Intent(this, MyService.class);}//Ctrl+alt+fpublic void btnStart(View view) {startService(intent);}public void btnStop(View view) {//Intent intent=new Intent(this,MyService.class);stopService(intent);}public void btnBind(View view) {bindService(intent, conn, BIND_AUTO_CREATE);binder.getAaa();}public void btnUnBind(View view) {unbindService(conn);}
}
Service.java
package cn.wangzg.course1001;import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import android.util.Log;public class MyService extends Service {private static final String TAG = "MyService";private String aaa;public MyService() {aaa = "hello Service!";}public class MyBinder extends Binder {public String getAaa() {return aaa;}}//返回的是一个Binder对象,作用:用来操作Service@Overridepublic IBinder onBind(Intent intent) {Log.d(TAG, "onBind: ");return new MyBinder();}@Overridepublic boolean onUnbind(Intent intent) {Log.d(TAG, "onUnbind: ");return super.onUnbind(intent);}@Overridepublic void onCreate() {super.onCreate();Log.d(TAG, "onCreate: ");}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {Log.d(TAG, "onStartCommand: ");return super.onStartCommand(intent, flags, startId);}@Overridepublic void onDestroy() {Log.d(TAG, "onDestroy: ");super.onDestroy();}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello World!"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent" /><Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="16dp"android:layout_marginTop="16dp"android:onClick="btnStart"android:text="startService"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /><Buttonandroid:id="@+id/button2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="16dp"android:onClick="btnStop"android:text="StopService"app:layout_constraintBaseline_toBaselineOf="@+id/button"app:layout_constraintStart_toEndOf="@+id/button" /><Buttonandroid:id="@+id/button3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="16dp"android:layout_marginTop="16dp"android:onClick="btnBind"android:text="bind"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/button" /><Buttonandroid:id="@+id/button4"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="16dp"android:onClick="btnUnBind"android:text="unbind"app:layout_constraintBaseline_toBaselineOf="@+id/button3"app:layout_constraintStart_toEndOf="@+id/button3" /></androidx.constraintlayout.widget.ConstraintLayout>
音乐播放器(course0902-wzg)
Android复习10【Service与Thread的区别、Service的生命周期、Service生命周期解析(相关方法详解、启动方式的不同、绑定)、音乐播放器+服务】相关推荐
- android服务绑定音乐播放器,Android基于Service的音乐播放器
本文开发一个基于Service的音乐播放器,音乐由后台运行的Service负责播放,当后台的播放状态发生变化时,程序将会通过发送广播通知前台Activity更新界面:当点击Activity的界面按钮时 ...
- android服务绑定音乐播放器,Android开发【04-21求助贴】使用后台服务的音乐播放器...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 import android.Manifest; import android.content.pm.PackageManager; import and ...
- MusicPlayer音乐播放器Android
MusicPlayer音乐播放器Android [音频采集] 你可以使用手机进行现场录音,实现步骤如下: 第一步:在功能清单文件AndroidManifest.xml中添加音频刻录权限: <us ...
- Android Studio如何实现音乐播放器(简单易上手)
我们大家平时长时间打代码的时候肯定会感到疲惫和乏味,这个时候一边播放自己喜欢的音乐,一边继续打代码,心情自然也愉快很多.音乐带给人的听觉享受是无可比拟的,动听的音乐可以愉悦人的身心,让人更加积极地去热 ...
- 如何写一个正经的Android音乐播放器 一
Github地址:https://github.com/boybeak/BeMusic 请移步到新文章查看新的教程 以前写过很多次音乐播放器,但是总有一些问题出现,例如: 1,音乐长时间播放问题(即便 ...
- Service 与 Thread 的区别
Service 与 Thread 的区别 很多时候,你可能会问,为什么要用 Service,而不用 Thread 呢,因为用 Thread 是很方便的,比起 Service 也方便多了,下面我详细的来 ...
- Android初步学习BroadCast与Service实现简单的音乐播放器
ctivity代码 view sourceprint? 001.package com.siyehuazhilian.musicplay; 002. 003.import java.util.Arr ...
- Android Service的使用方法 音乐播放器实例
Service翻译成中文是服务,熟悉Windows 系统的同学一定知道很熟悉了.Android里的Service跟Windows里的Service功能差不多,就是一个不可见的进程在后台执行,避免被用户 ...
- Android复习01(内部存储、外部存储、SD卡存储、XML解析、Json解析、保存登录密码)
2020年 3月19日 星期四 [第5周]Android录播回放 笔记 https://gitee.com/wang_zhiguo/Course0501 老师把上课用的案例源码,放在了Gitee仓库中 ...
最新文章
- 对linux内核学习的一点感受,对linux内核学习的一点感受
- 字符串的比较相关方法
- SpringCloud学习之路(一)-简单Demo
- c语言学习进阶-C语言程序实现矩阵乘法
- scrapy_redis项目配置
- ie6下 jsonp无响应的问题
- prototype中的$R函数的用法
- ajax谷歌浏览器没缓存,从缓存AJAX请求会导致Chrome(Prevent Chrome from caching AJA
- APK签名之keytool生成keystore和jarsigner签名apk
- 【数据结构:树】——搜索二叉树-K模型(非递归和递归)
- 基于 mini2440 电阻式触摸屏(二):S3C2440 电阻式触摸屏接口、内部ADC结构
- 数据库COUNT(*)、COUNT(字段)和COUNT(1)的异同
- WebSocket实现简单多人聊天
- 华为云mysql教程_华为云+NextCloud(私人云盘搭建)
- 在QQ群和QQ空间中挂马
- pytorch局部范围内禁用梯度计算,no_grad、enable_grad、set_grad_enabled使用举例
- 机器学习-神经网络为什么需要非线性(激活函数)
- 【前端-Js基础方法】字符串常用方法汇总
- 碎片化的时代,如何学习
- 电源常识-变压器同名端
热门文章
- 计算机网络电缆被拔出是怎么办,网络电缆被拔出是什么意思?网络电缆被拔出的修复办法...
- php cli mysql_php – 为什么mysql CLI可以连接,但不能连接WordPress?
- 最流行的python爬虫框架_Python最火爬虫框架Scrapy入门与实践
- python的datetime举例_Python datetime.timedelta()用法及代码示例
- 不同程序用不同网络_微信小程序直播登场,与平台直播有何不同?
- 鸿蒙操作系统手机什么时候上市,[财经]鸿蒙手机来了!2021华为鸿蒙手机系统发布会上线时间出炉(2) - 南方财富网...
- 梯度下降(Gradient Descent)的收敛性分析
- ​亚马逊出品:非均匀扰动的对抗鲁棒性理论分析
- CIKM 2020 | 知识库问答复杂问题的分层查询图生成方法
- 送书福利 | 大数据智能:数据驱动的自然语言处理技术