安卓开发系列 之启动式服务和绑定式服务

news/2024/7/24 12:08:58 标签: android, 安卓, android studio, ios, java

服务是无界面的APP组件,可在后台运行,作用是下载文件、缓存音乐、监听消息等,具备更简单的生命周期。
启动式服务可独立于Activity运行,完成任务后停止;
绑定式服务绑定至其它组件,绑定的Activity可与服务互动;
计划式服务在计划的时间点运行。

启动式服务:
可继承至IntentService,是简单的启动式服务;
需要覆盖onHandleIntent()方法,收到intent后在独立线程中运行;
IDE需要在AndroidMainfest.xml中声明服务;
可使用安卓系统服务NotificationManager发出通知notify()。
代码参考为:

java">//建立一个通知Builder
NotificationCompat.Builder builder = new NotificationCompat.Builder(this).setSmallIcon(android.R.drawable.sym_def_app_icon)
                .setContentTitle(getString(R.string.question))
                .setContentText(text)
                .setPriority(NotificationCompat.PRIORITY_HIGH)
                .setVibrate(new long[]{0,1000})
                .setAutoCancel(true);
//打开MainActivity的intent
Intent actionIntent = new Intent(this,MainActivity.class);
//准备PendingIntent
PendingIntent actionPendingIntent = PendingIntent.getActivity(this,
                0,actionIntent,PendingIntent.FLAG_CANCEL_CURRENT);
//为通知附加PendingIntent
builder.setContentIntent(actionPendingIntent);
//发出通知
NotificationManager notificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify(NOTIFICATION_ID,builder.build());

补充:Intent和PendingIntent的区别
PendingIntent 可以看作是对intent的包装,通常通过getActivity,getBroadcast ,getService来得到pendingintent的实例,当前activity并不能马上启动它所包含的intent,而是在外部执行 pendingintent时,调用intent;
Intent一般是用作Activity、Sercvice、BroadcastReceiver之间传递数据,而Pendingintent一般用在 Notification上,可以理解为延迟执行的intent。

PendingIntent.getActivity(Context context, int requestCode, Intent intent, int flags)
第一个参数连接上下文的context
第二个参数是对PendingIntent的描述,请求值不同Intent就不同
第三个参数是一个Intent对象,包含跳转目标
第四个参数有4种状态

绑定式服务:
绑定式服务绑定至另一个组件,活动与服务绑定后可与服务交互,发送请求并得到结果。
代码参考为:

java">protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      //Activity绑定服务,使用匿名内部类初始化
      ServiceConnection connection = new ServiceConnection() {
          //绑定服务
          @Override
          public void onServiceConnected(ComponentName name, IBinder service) {
              bound = true;
          }
          //解绑服务
          @Override
          public void onServiceDisconnected(ComponentName name) {
              bound = false;
          }
      };
}

注意:这里onServiceConnected方法中的第二个参数为IBinder接口实现的类,所有需要在调用的服务中实现IBinder接口。

参考资料:
https://blog.csdn.net/zeng622peng/article/details/6180190 Intent和PendingIntent的区别
https://www.icourse163.org/learn/BFU-1205989803?tid=1450759471&from=study#/learn/content 移动开发技术MOOC课程
https://www.cnblogs.com/lyxin/p/5995681.html PendingIntent.getActivity的使用
https://www.cnblogs.com/itcqx/p/5557241.html Android中pendingIntent的深入理解


http://www.niftyadmin.cn/n/1223872.html

相关文章

系统运维系列 之tomcat服务器上webapps文件夹里的名称与项目名称不一致

背景: 从SVN上下载的项目为了不与原来项目文件夹的项目名称重复,往往会修改成另外一个名称,如AAAAAA重新命名为AAAAAANew,但是在本地或者线上发布后(部署到tomcat上时)还是以原有的项目名进行发布,没有更改成原来的名称…

系统运维系列 之tomcat配置文件server.xml配置含义说明

参考资料: https://www.cnblogs.com/aaron911/p/11006493.html tomcat中server.xml配置详解 这篇博客从理论和基本元素出发,讲解的很详细,值得参考。 https://blog.csdn.net/qq_31957747/article/details/53729530 tomcat配置文件server.xm…

安卓开发系列 之常用工具链接

1 在寻找应用icon时常用的工具库: https://www.iconfont.cn/home/index?spma313x.7781069.1998910419.2 iconfont库,可以选择图片下载格式,改变图片颜色 2 RGB颜色对照表: https://tool.oschina.net/commons?type3 3 github&a…

安卓开发系列 之自定义表格显示数据

Android 自定义TextView控件,用来组成表格方便数据的展示。 首先看一下效果: 实现步骤为: (1)自定义控件 MyTableTextView 继承 TextView 重写onDraw方法。在里面添加话边框的操作。 package lyf.com.mytableview;im…

安卓开发系列 之实现绘制折线图的方法

在安卓开发中实现折线图的方法有MPAndroidChart、XCL-chart、achartenginee和hellochart等,这里利用hellochart进行实现,这种实现方法简单快捷,界面美观,在使用后感觉代码比较清晰,操作时比较流畅,支持饼状…

使用Visual C++ 6.0开发MAPGIS浏览器

地理信息系统(GIS)是集计算机科学、地理学、测绘遥感学、环境科学、城市科学、空间科学、信息科学和管理科学为一体的新兴边缘学科,目前发展已相当成熟,国内外高水平软件分别有ARC/INFO、MAPINFO、MAPGIS等。下文介绍一个以MAPGIS…

关于atl server的感受(1)

老板决定用atl server技术,说是为了网站的效率。在使用过程中也感觉确实比asp之类的快一些,毕竟,他是在c的层次上直接封装了isapi。atl server这个名字起的不伦不类,直到现在朋友问我在做什么,我还是费尽的说半天&…

VB(非.NET)写的史上最强EXE保护程序(开源)

VB(非.NET)写的史上最强EXE保护程序(开源)。据作者说:他已经获得超过100个客户购买其商业版,而且其核心部分已经给Adobe公司买断,这应该是唯一可以看到的源代码了:http://www.planet-source-code.com/vb/sc…