51服務的開啟方式

服務開啟方式的知識點見博文:http://blog.csdn.net/zengmingen/article/details/49425161


步驟:

1、新建Android項目名“51服務的開啟方式”

2、新建一個類 MyService,繼承?Service

3、在清單文件里配置第二步建的service

4、在Myservice類中覆寫 onBind,onUnbind,onCreate,onStartCommand,onDestroy,并在這些方法里寫上簡單的syso

5、編寫activity_main.xml布局文件,簡單的放置4個按鈕,按鈕設置onclick方法

6、編寫按鈕方法


API解釋:

bindService(Intent service,ServiceConnection conn, int flags)

作用:綁定服務。將參數service里的服務,通過服務連接ServiceConnection?以參數flags的方式綁定服務

service:設置了要啟動的服務,本地或遠程服務

conn:該類有兩個回調方法

1、public void onServiceConnected(ComponentName name, IBinder service)?

該方法在MyService類的onBind()方法返回一個IBinder 的實例的時候被調用。如果返回的null,則不被調用。

2、public void onServiceDisconnected(ComponentName name)

該方法在連接正常關閉的情況下是不會被調用的, 該方法只在Service 被破壞了或者被殺死的時候調用。例如, 系統資源不足, 要關閉一些Services, 剛好連接綁定的 Service 是被關閉者之一,??這個時候onServiceDisconnected() 就會被調用。

flags:一般選擇使用?BIND_AUTO_CREATE,它是Context的常量,自動根據服務是否存在創建服務


代碼:


MyService.java

package com.example.serviceway;import android.app.Service;
import android.content.Intent;
import android.os.IBinder;public class MyService extends Service {@Overridepublic IBinder onBind(Intent intent) {System.out.println("MyService:onBind()");return null;}@Overridepublic boolean onUnbind(Intent intent) {System.out.println("MyService:onUnbind()");return super.onUnbind(intent);}@Overridepublic void onCreate() {System.out.println("MyService:onCreate()");super.onCreate();}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {System.out.println("MyService:onStartCommand()");return super.onStartCommand(intent, flags, startId);}@Overridepublic void onDestroy() {System.out.println("MyService:onDestroy()");super.onDestroy();}}


MainActivity.java

package com.example.serviceway;import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.view.View;public class MainActivity extends Activity {private Intent intent;private ServiceConnection conn;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);intent=new Intent();intent.setClass(this, MyService.class);conn=new MyServiceConnection();}public void startService(View v){startService(intent);}public void stopService(View v){stopService(intent);}public void bindService(View v){//BIND_AUTO_CREATE 是上下文里的常量,如果服務不存在,則自動創建bindService(intent, conn, BIND_AUTO_CREATE);}public void unBindService(View v){unbindService(conn);}class MyServiceConnection implements ServiceConnection{@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {//服務連接成功時,該方法調用System.out.println("MyServiceConnection:服務連接了!");}@Overridepublic void onServiceDisconnected(ComponentName name) {//服務失去連接時,該方法調用System.out.println("MyServiceConnection:服務連接斷開了!");}}}

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.serviceway"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="17" /><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name="com.example.serviceway.MainActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><service android:name="com.example.serviceway.MyService"></service></application></manifest>



運行結果:


開啟服務:

10-26 08:38:26.386: I/System.out(2072): MyService:onCreate()
10-26 08:38:26.386: I/System.out(2072): MyService:onStartCommand()

停止服務:

10-26 08:39:03.076: I/System.out(2072): MyService:onDestroy()

綁定服務:

10-26 08:39:21.436: I/System.out(2072): MyService:onCreate()
10-26 08:39:21.436: I/System.out(2072): MyService:onBind()

解綁服務:

10-26 08:39:48.807: I/System.out(2072): MyService:onUnbind()
10-26 08:39:48.807: I/System.out(2072): MyService:onDestroy()

綁定服務---->返回鍵退出activity

10-26 08:40:34.818: I/System.out(2072): MyService:onCreate()
10-26 08:40:34.818: I/System.out(2072): MyService:onBind()
10-26 08:40:36.578: I/System.out(2072): MyService:onUnbind()
10-26 08:40:36.578: I/System.out(2072): MyService:onDestroy()

activity銷毀,服務銷毀

綁定服務---->home鍵

10-26 08:41:16.698: I/System.out(2072): MyService:onCreate()
10-26 08:41:16.698: I/System.out(2072): MyService:onBind()

activity還在,服務沒銷毀

開啟服務----->返回鍵退出activity

10-26 08:42:43.020: I/System.out(2072): MyService:onCreate()
10-26 08:42:43.020: I/System.out(2072): MyService:onStartCommand()

activity銷毀,服務不銷毀

--------------------------------------

開啟服務---->綁定服務---->停止服務

10-26 08:44:05.991: I/System.out(2072): MyService:onCreate()
10-26 08:44:06.001: I/System.out(2072): MyService:onStartCommand()
10-26 08:44:07.402: I/System.out(2072): MyService:onBind()

停止服務按鈕使勁點,服務也沒有停止銷毀,why?

因為綁定服務后,停止服務是無效的,需要使用解綁方法,解綁的時候同時銷毀服務

開啟服務---->綁定服務---->---->停止服務----->解綁服務

10-26 08:55:52.942: I/System.out(2545): MyService:onCreate()
10-26 08:55:52.942: I/System.out(2545): MyService:onStartCommand()
10-26 08:55:53.871: I/System.out(2545): MyService:onBind()
10-26 08:55:56.691: I/System.out(2545): MyService:onUnbind()
10-26 08:55:56.691: I/System.out(2545): MyService:onDestroy()


代碼下載,0積分下載

http://download.csdn.net/detail/zengmingen/9214327


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/540001.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/540001.shtml
英文地址,請注明出處:http://en.pswp.cn/news/540001.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java mysql 存儲圖片_Java存儲圖片到Mysql

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓【1】視圖層action"${ctx}/web/UserInforServlet?methoduserInforServlet" >更換頭像立即提交重置var layer,upload,form;//1-頁面數據加載$(function () {//【1】加載&初始化layui模塊-彈出層與table數據表格la…

JavaWeb應用配置文件安全解決方案

這里主要說說JavaWeb應用的配置文件安全&#xff0c;通常JavaWeb應用多多少少會有一些配置文件&#xff0c;其中數據源的配置則是關系到數據庫的安全&#xff0c;另外還有一些基于文件的權限配置&#xff0c;應用程序的一些系統參數。鑒于這樣的情況&#xff0c;如果配置文件被…

java 免費cms_開源 免費 java CMS

Bug修復:1.菜單管理&#xff1a;刪除操作按鈕后不能直接進行刪除菜單操作。2.刪除單位時操作記錄不顯示單位名稱問題。3.站點管理&#xff1a;改變所屬站點增加改變為一級站點功能&#xff0c;上傳非圖片logo時雖然提示但仍上傳成功問題。4.模板文件管理&#xff1a;點擊查看/下…

Android加載大圖片不OutOfMemoryError

Android加載圖片時&#xff0c;對于分辨率小&#xff0c;配置低的機子&#xff0c;很容易發生OutOfMemoryError。手機的內存比圖片的大很多&#xff0c;怎么會這樣&#xff1f; 在設置Android虛擬機的內存時&#xff1a; RAM&#xff1a;模擬器的內存空間 VM Heap&#xff1a;…

任務計劃、chkconfig工具、systemd管理服務、unit、target

比如備份數據或者重啟服務。 crontab -u、-e、-l、-r&#xff08;刪除&#xff09; 格式&#xff1a;分 時 日 月 周 user command 文件/var/spool/cron/username 分范圍0-59&#xff0c;時范圍0-23&#xff0c;日范圍1-31&#xff0c;月范圍1-12&#xff0c;周1-7 可用格式1-5…

vue打卡日歷_Vue日歷

new Vue({el: ‘#calendar‘,data: {currentDay: 1,currentMonth: 1,currentYear: 1970,currentWeek: 1,days: [],addDay: [],},created: function() {this.initData(null);var $this this;//請求數據$.ajax({url: "這里填接口名稱",type: "POST",data: {…

android Intent機制詳解

原文出處&#xff1a;http://blog.csdn.net/t12x3456/article/details/7688154 什么是Intent Intent是一種運行時綁定&#xff08;run-time binding&#xff09;機制&#xff0c;它能在程序運行過程中連接兩個不同的組件。通過Intent&#xff0c;你的程序可以向Android表達某種…

python基本數據類型(四)-集合與運算符-python3筆記

1.集合 2.字典 3.運算符優先級 1.集合 創建&#xff1a;() set() 注意&#xff1a;創建空的集合要用set() 特點&#xff1a;元素唯一&#xff0c;無序 運算&#xff1a; &&#xff08;交集&#xff09; |&#xff08;并集&#xff09; -&#xff08;差集&#xff0…

Android的權限

Android有四種權限&#xff1a; 1、Permission 權限 2、Root權限 3、Bootloader的解鎖 4、Radio(基帶)解鎖 ------------------------------------ 1、Permission 我們在開發中經常使用到 Permission 權限&#xff0c;即一系列"Android.Permission.*"對象。…

hive2 java連接_用Java代碼通過JDBC連接Hiveserver2

1.在終端啟動hiveserver2#hiveserver22.使用beeline連接hive另外打開一個終端&#xff0c;輸入如下命令(xavierdb必須是已經存在的數據庫)#beeline -u jdbc:hive2://localhost:10000/xavierdb -n hive -p hive3.添加maven依賴org.apache.hivehive-jdbc1.1.0junitjunit4.9org.ap…

java 向上拋異常_Java 異常的處理方式throws

在昨天的文章《Java 異常的分類與處理》中我們簡單地了解了一下在方法聲明的位置上使用throws關鍵字向上拋出異常&#xff0c;下面深入講解異常的第一種處理方式throws。下面深入講解異常的第一種處理方式throws。看以下例子&#xff1a;import java.io.*;public class Excepti…

Jquery mobile 解決IOS9selectli閃退問題

升級IOS9后&#xff0c;JQuery mobile 出現了個bug問題。<select>&#xff0c;<ul><li></li></ul> 出現閃退。 解決方法&#xff1a; 必須加在 jquery.js 和 jquerymobile.js 中間 <script src"......../...../jquery-2.0.0.min.js&qu…

JAVA通過SSL證書創建MS AD賬戶及設置密碼

近期由于工作需要整理一下自動化的東西&#xff0c;因為公司去年上線了OA&#xff0c;所以公司的入職系統會提交用戶的信息到IT部門&#xff0c;最早的做法是入職到了&#xff0c;IT部門收集用戶信息在AD中創建對應的用戶信息&#xff0c;所以為了提高管理員的工作效率&#xf…

java 實體類規范_實體類的規范

1.Boolean類型1.1.使用Boolean類型,而不是Byte類型1.2.數據庫字段名使用is_開頭1.3.實體類字段名不使用is開頭例子/*** 是否為新消息*/Column(name "is_new_message", nullable false)private Boolean newMessage;2.Enum類型1.使用Convert注解, 并指定coverter類例…

01電話撥號器

實例非常簡單&#xff0c;意在體驗Android的Intent&#xff0c;用戶權限。 Intent 見 http://blog.csdn.net/zengmingen/article/details/49586045 用戶權限 見 http://blog.csdn.net/zengmingen/article/details/49586569 --------------------------------------------------…

微信小程序筆記六模塊化 —— module.exports

微信小程序中所有 js 文件作用域皆為獨立的&#xff0c;每一個 js 文件即為一個模塊。模塊與模塊之間的引用通過 module.exports 或 exports 對外暴露接口。 注意&#xff1a; exports 是 module.exports 的一個引用&#xff0c;因此在模塊里邊隨意更改 exports 的指向會造成未…

java常用的統計_(OJ)Java常用類-統計數字次數

統計數字次數Problem Description命令行輸入一個由數字組成的任意字符串,統計出每個數字出現的次數。Input Description1239586838Output Description0 counts:01 counts:12 counts:13 counts:24 counts:05 counts:16 counts:17 counts:08 counts:39 counts:1解題代碼import ja…

02發送短信

使用SmsManager發送短信java.lang.Object ?android.telephony.SmsManagerManages SMS operations such as sending data, text, and pdu SMS messages. Get this object by calling the static method SmsManager.getDefault().管理短信操作&#xff0c;如發送數據&#xff…

Python運行環境與異常處理

Python的命令格式&#xff1a; python [option] ... [-c cmd | -m mod | file | -] [arg] ... 選項描述-J 啟動將從Python3中刪除或更改某些功能的警告 -B阻止在導入時創建.pyc或.pyo文件-E忽略環境變量-h打印所有可用命令行選項的列表-i在程序執行后進入交互模式-m module以腳…

Java應用一般架構

原文鏈接&#xff1a;http://www.iteye.com/news/31115 當我們架設一個系統的時候通常需要考慮到如何與其他系統交互&#xff0c;所以我們首先需要知道各種系統之間是如何交互的&#xff0c;使用何種技術實現。 1. 不同系統不同語言之間的交互 現在我們常見的不同系統不同語…