音乐播放器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生命周期解析(相关方法详解、启动方式的不同、绑定)、音乐播放器+服务】相关推荐

  1. android服务绑定音乐播放器,Android基于Service的音乐播放器

    本文开发一个基于Service的音乐播放器,音乐由后台运行的Service负责播放,当后台的播放状态发生变化时,程序将会通过发送广播通知前台Activity更新界面:当点击Activity的界面按钮时 ...

  2. android服务绑定音乐播放器,Android开发【04-21求助贴】使用后台服务的音乐播放器...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 import android.Manifest; import android.content.pm.PackageManager; import and ...

  3. MusicPlayer音乐播放器Android

    MusicPlayer音乐播放器Android [音频采集] 你可以使用手机进行现场录音,实现步骤如下: 第一步:在功能清单文件AndroidManifest.xml中添加音频刻录权限: <us ...

  4. Android Studio如何实现音乐播放器(简单易上手)

    我们大家平时长时间打代码的时候肯定会感到疲惫和乏味,这个时候一边播放自己喜欢的音乐,一边继续打代码,心情自然也愉快很多.音乐带给人的听觉享受是无可比拟的,动听的音乐可以愉悦人的身心,让人更加积极地去热 ...

  5. 如何写一个正经的Android音乐播放器 一

    Github地址:https://github.com/boybeak/BeMusic 请移步到新文章查看新的教程 以前写过很多次音乐播放器,但是总有一些问题出现,例如: 1,音乐长时间播放问题(即便 ...

  6. Service 与 Thread 的区别

    Service 与 Thread 的区别 很多时候,你可能会问,为什么要用 Service,而不用 Thread 呢,因为用 Thread 是很方便的,比起 Service 也方便多了,下面我详细的来 ...

  7. Android初步学习BroadCast与Service实现简单的音乐播放器

    ctivity代码 view sourceprint? 001.package com.siyehuazhilian.musicplay; 002.  003.import java.util.Arr ...

  8. Android Service的使用方法 音乐播放器实例

    Service翻译成中文是服务,熟悉Windows 系统的同学一定知道很熟悉了.Android里的Service跟Windows里的Service功能差不多,就是一个不可见的进程在后台执行,避免被用户 ...

  9. Android复习01(内部存储、外部存储、SD卡存储、XML解析、Json解析、保存登录密码)

    2020年 3月19日 星期四 [第5周]Android录播回放 笔记 https://gitee.com/wang_zhiguo/Course0501 老师把上课用的案例源码,放在了Gitee仓库中 ...

最新文章

  1. 对linux内核学习的一点感受,对linux内核学习的一点感受
  2. 字符串的比较相关方法
  3. SpringCloud学习之路(一)-简单Demo
  4. c语言学习进阶-C语言程序实现矩阵乘法
  5. scrapy_redis项目配置
  6. ie6下 jsonp无响应的问题
  7. prototype中的$R函数的用法
  8. ajax谷歌浏览器没缓存,从缓存AJAX请求会导致Chrome(Prevent Chrome from caching AJA
  9. APK签名之keytool生成keystore和jarsigner签名apk
  10. 【数据结构:树】——搜索二叉树-K模型(非递归和递归)
  11. 基于 mini2440 电阻式触摸屏(二):S3C2440 电阻式触摸屏接口、内部ADC结构
  12. 数据库COUNT(*)、COUNT(字段)和COUNT(1)的异同
  13. WebSocket实现简单多人聊天
  14. 华为云mysql教程_华为云+NextCloud(私人云盘搭建)
  15. 在QQ群和QQ空间中挂马
  16. pytorch局部范围内禁用梯度计算,no_grad、enable_grad、set_grad_enabled使用举例
  17. 机器学习-神经网络为什么需要非线性(激活函数)
  18. 【前端-Js基础方法】字符串常用方法汇总
  19. 碎片化的时代,如何学习
  20. 电源常识-变压器同名端

热门文章

  1. 计算机网络电缆被拔出是怎么办,网络电缆被拔出是什么意思?网络电缆被拔出的修复办法...
  2. php cli mysql_php – 为什么mysql CLI可以连接,但不能连接WordPress?
  3. 最流行的python爬虫框架_Python最火爬虫框架Scrapy入门与实践
  4. python的datetime举例_Python datetime.timedelta()用法及代码示例
  5. 不同程序用不同网络_微信小程序直播登场,与平台直播有何不同?
  6. 鸿蒙操作系统手机什么时候上市,[财经]鸿蒙手机来了!2021华为鸿蒙手机系统发布会上线时间出炉(2) - 南方财富网...
  7. 梯度下降(Gradient Descent)的收敛性分析
  8. ​亚马逊出品:非均匀扰动的对抗鲁棒性理论分析
  9. CIKM 2020 | 知识库问答复杂问题的分层查询图生成方法
  10. 送书福利 | 大数据智能:数据驱动的自然语言处理技术