位置: 编程技术 - 正文

学习android之Service(android secure)

编辑:rootadmin

推荐整理分享学习android之Service(android secure),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:android_secure,android se,android sercice,android secure,android serivce,android serivce,android se,android serivce,内容如对您有帮助,希望把文章链接给更多的朋友!

学习android之Service

综述

Service是android 系统中的一种组件,它跟Activity的级别差不多,但是他不能自己运行,只能后台运行,并且可以和其他组件进行交互。service可以在很多场合的应用中使用,比如播放多媒体的时候用户启动了其他Activity这个时候程序要在后台继续播放,比如检测SD卡上文件的变化,再或者在后台记录你地理信息位置的改变等等,总之服务嘛,总是藏在后头的。

启动方式

1 .context.startService() 方式

使用context.startService() 启动时,Service会经历如下生命周期:

Start: context.startService()→onCreate()→onStart()→Servicerunning

Stop: context.stopService()→onDestroy()→Service stop

如果Service还没有运行,则android先调用onCreate()然后调用onStart();如果Service已经运行,则只调用onStart(),所以一个Service的onStart方法可能会重复调用多次。 stopService的时候直接onDestroy,如果是调用者自己直接退出而没有调用stopService的话,Service会一直在后台运行。该Service的调用者再启动起来后可以通过stopService关闭Service。所以调用startService的生命周期为:onCreate --> onStart(可多次调用)--> onDestroy

2. context.bindService()方式

使用使用context.bindService()启动时,Service会经历如下生命周期:

Start: context.bindService()→onCreate()→onBind()→Servicerunning

Stop: onUnbind()→onDestroy()→Service stop

onBind将返回给客户端一个IBind接口实例,IBind允许客户端回调服务的方法,比如得到Service运行的状态或其他操作。这个时候把调用者(Context,例如Activity)会和Service绑定在一起,Context退出了,Srevice就会调用onUnbind->onDestroy相应退出。 所以调用bindService的生命周期为:onCreate->onBind(只一次,不可多次绑定) --> onUnbind --> onDestory。在Service每一次的开启关闭过程中,只有onStart可被多次调用(通过多次startService调用),其他onCreate,onBind,onUnbind,onDestory在一个生命周期中只能被调用一次。

编程流程:

1. 注册Service,在AndroidManifest.xml文件中定义。

2. 编写自己的Service类,该类必须继承Service类

3. 在适当的位置启动Service。

举例1 音乐播放(下载地址: com.example.com.njupt.zhb.musicplay;

import android.os.Bundle;

import android.app.Activity;

import android.content.Intent;

import android.view.Menu;

import android.view.View;

import android.widget.Button;

import android.view.View.OnClickListener;

publicclass PlayServiceextends Activity {

private ButtonPlayBtn;

private ButtonStopBtn;

OnClickListener listener=null;

@Override

publicvoid onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_play_service);

PlayBtn=(Button)findViewById(R.id.start);

StopBtn=(Button)findViewById(R.id.stop);

listener=new View.OnClickListener() {

@Override

publicvoid onClick(View v) {

//TODO Auto-generatedmethod stub

switch(v.getId()){

case R.id.start:

//启动在manifest.xml中注册为“blog.csdn.net.nuptboyzhb.StartService”的Service

Intentintent1=newIntent("blog.csdn.net.nuptboyzhb.StartService");

startService(intent1);

break;

case R.id.stop:

//停止在manifest.xml中注册为“blog.csdn.net.nuptboyzhb.StartService”的Service

Intentintent2=new Intent("blog.csdn.net.nuptboyzhb.StartService");

stopService(intent2);

break;

}

}

};

PlayBtn.setOnClickListener(listener);

StopBtn.setOnClickListener(listener);

}

@Override

publicboolean onCreateOptionsMenu(Menu menu){

getMenuInflater().inflate(R.menu.activity_play_service, menu);

returntrue;

}

}

Service :Music.java

package com.example.com.njupt.zhb.musicplay;

import android.app.Service;

import android.content.Intent;

import android.media.MediaPlayer;

import android.os.IBinder;

import android.util.Log;

publicclass Musicextends Service {

学习android之Service(android secure)

private MediaPlayerplayer;

@Override

public IBinder onBind(Intent intent) {

//TODO Auto-generatedmethod stub

returnnull;

}

@Override

publicvoidonStart(Intentintent, int startId) {

super.onStart(intent, startId);

player = MediaPlayer.create(this, R.raw.gequ);

player.start();

Log.e("1","play");

}

@Override

publicvoidonDestroy() {

super.onDestroy();

player.stop();

Log.e("2","stop");

}

}

XML :activity_play_service.xml

<?xmlversion="1.0"encoding="utf-8"?>

<AbsoluteLayout

android:id="@&#;id/widget0"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

xmlns:android=" android:id="@&#;id/start"

android:layout_width="dp"

android:layout_height="wrap_content"

android:text="Play"

android:layout_x="1dp"

android:layout_y="dp"/>

<Button

android:id="@&#;id/stop"

android:layout_width="dp"

android:layout_height="wrap_content"

android:text="Stop"

android:layout_x="2dp"

android:layout_y="dp"/>

</AbsoluteLayout>

XML :AndroidManifest.xml

<manifestxmlns:android=" package="com.example.com.njupt.zhb.musicplay"

android:versionCode="1"

android:versionName="1.0">

<uses-sdk

android:minSdkVersion="4"

android:targetSdkVersion=""/>

<application

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme">

<activity

android:name=".PlayService"

android:label="@string/title_activity_play_service">

<intent-filter>

<actionandroid:name="android.intent.action.MAIN"/>

<categoryandroid:name="android.intent.category.LAUNCHER"/>

</intent-filter>

</activity>

<! 注册service>

<serviceandroid:name=".Music">

<intent-filter>

<actionandroid:name="blog.csdn.net.nuptboyzhb.StartService"/>

<categoryandroid:name="android.intent.category.default"/>

</intent-filter>

</service>

</application>

</manifest>

小节

从上述代码中,我们应该注意如下几点:

1. startService和stopService的Intent的参数,必须与AndroidManifest.xml文件中action项的name&#;保持完全一致。否则,不能启动Music服务。

2. 服务Music必须继承Service类。

Android学习之BroadcastReceiver总结 Android学习之BroadcastReceiver总结代码下载:

android学习之选择媒体库中的图片 从媒体库中选择图片主要是启动系统相关ActivityIntenti=newIntent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI;startActivityForResult(i,RESULT_LOAD_IM

Android开发之文件浏览器 源码下载地址:

标签: android secure

本文链接地址:https://www.jiuchutong.com/biancheng/368654.html 转载请保留说明!

上一篇:android各种控件的事件监听及举例(andriod 控件)

下一篇:Android学习之BroadcastReceiver总结(android break)

  • 税务安全组件初审流程
  • 个税计算方法和规定
  • 本期缴纳前期应纳税额
  • 个人所得税本期免税收入是指什么
  • 电子设备残值率的最新规定
  • 酒水进项税税率
  • 企业审计费入什么科目
  • 公务员工资待遇标准表
  • 农民为什么没有说理的地方
  • 参加公司比赛后的感想
  • 十万位发票怎么开
  • 进口代理公司怎么收费
  • 企业短期贷款进什么科目
  • a104000期间费用明细表
  • 公司支付媒体广告费用必须签订合同吗?如果没有签订合同是否不能税前扣除?
  • 航天金税服务费280怎么缴费
  • 上报汇总完成,远程清卡清不了
  • 新开办公司前三个月没交社保,后面正常缴纳
  • 计提社保公司承担部分怎么算
  • 鸿蒙大文件夹怎么设置透明度
  • 怎么快速关闭电脑屏幕快捷键
  • 财政拨款事业单位和全额事业单位
  • 出口转内销会计账务处理
  • 资产减值损失在贷方表示什么意思
  • 公司一直是亏损怎么赔偿
  • 一个非常好看的中秋礼物怎么做
  • 出口企业增值税怎么算
  • PHP:mcrypt_decrypt()的用法_Mcrypt函数
  • 开发支出应属于什么科目
  • 货运代理开票
  • 最大规模的科技公司
  • 购入固定资产后什么时候开始计提折旧
  • 接受股权投资账务处理
  • 会计人员准则
  • 会计凭证附件规范要求
  • php zend原理
  • 损益类科目调整影响所得税吗为什么
  • 购买方未抵扣,销售方申请红字
  • thinkphp6.0完全开发手册
  • 基建账并账规定
  • 规划设计费会计处理
  • 关于持股平台的法律法规
  • 长期借款科目的借方反映的内容
  • 长期股权投资初始计量会计科目
  • php添加
  • 我想问一下移动
  • 代收代付进项税转出吗
  • 百旺连接服务器失败,是否使用离线文件进行更新
  • 银行回单应如何打印
  • 小规模纳税人的企业所得税税率
  • 收到退货怎么做会计分录
  • mysql分片sql
  • 施工企业暂估成本
  • 增值税税控系列是什么
  • 计算税前利润时 是否考虑资金成本
  • 固定资产递延资产
  • 公司做的形象墙效果图
  • 执行企业会计准则和小企业会计准则的区别
  • 系统多交税款放在哪里
  • 房地产开发企业电费做什么科目
  • win7卸载KB2952664/KB3035583补丁的详细图文教程
  • windows下打开ie提示由于该计算机受到限制,本次操作已被取消
  • ubuntu touch怎么刷入
  • y400加装固态硬盘教程
  • win7共享文件设置
  • node 线程 进程
  • 基于jquery实现可定制的web在线富文本编辑器附源码下载
  • nodejs自动生成接口文档
  • jQuery实现两个下拉列表关联
  • c调用java后又调用回
  • Scrapy框架可以用于数据挖掘、监测和自动化测试
  • python多线程代码
  • androidui框架
  • asp.net+jquery.form实现图片异步上传的方法(附jquery.form.js下载)
  • 创建android项目
  • 应交税费二级科目有哪些
  • 县级税务
  • 股权转让查账重点查什么
  • 涠洲岛船票售完
  • 残疾人个体工商户补贴
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设