日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Service基本组成 (一)

發布時間:2024/4/15 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Service基本组成 (一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Servicet和Activity是不同的,Activity顯示圖形用戶界面,而Service的運行是不可見的——如執行Intent 查找、處理數據、更新Content Provider、激活Intent和觸發Notification。Activity在它的生命周期內定期的啟動、停止和重新創建,而Service則被設計為是長生命周期的——特別地,它用來執行一些持續性的、可能耗時的操作。

Service 的啟動、停止和控制是通過其他應用程序組件來實現的,包括Activity、Broadcast Receiver和其他的Service.如果應用程序提供那些不直接依賴用戶輸入或者包括耗時操作的功能,Service 也廣告是一種選擇。

1》創建Service

要定義一下Service ,需要創建一個繼承Service 的新類。需要重寫onCreate和onBind方法。

為了說明其生命周期,我們也重寫了其生命周期方法。如下:

package com.demo.servicedemo;import android.app.Service; import android.content.Intent; import android.os.IBinder;public class MyService extends Service {public MyService() {// TODO Auto-generated constructor stubSystem.out.println("MyService.MyService()");}@Overridepublic IBinder onBind(Intent intent) {// TODO Auto-generated method stubSystem.out.println("MyService.onBind()");return null;}/*** 當第一次創建Service 時,調用此方法, 此后,如果Service沒有停止的情況下,再次啟動Service , 都不會再調用此方法* */@Overridepublic void onCreate() {// TODO Auto-generated method stubsuper.onCreate();System.out.println("MyService.onCreate()");}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {// TODO Auto-generated method stubSystem.out.println("MyService.onStartCommand()");System.out.println("MyService.onStartCommand()--flags:" + flags);System.out.println("MyService.onStartCommand()--startId:" + startId);return super.onStartCommand(intent, flags, startId);}/*** 停止Service 時,調用此方法* */@Overridepublic void onDestroy() {// TODO Auto-generated method stubSystem.out.println("MyService.onDestroy()");super.onDestroy();}}

2》在manifest.xml文件中注冊該Service

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.demo.servicedemo"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="19" /><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name=".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 --><service android:name="com.demo.servicedemo.MyService" ></service></application></manifest>

3》測試

3.1》測試運行效果


布局代碼如下:

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><Buttonandroid:id="@+id/startButton"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="啟動Service" /><Buttonandroid:id="@+id/stopButton"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="停止Service" /></LinearLayout>
3.2》測試代碼如下:

MainActivity.java

package com.demo.servicedemo;import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button;public class MainActivity extends Activity {// 聲明控件private Button startButton = null;private Button stopButton = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);init();}private void init() {// 初始化控件startButton = (Button) findViewById(R.id.startButton);stopButton = (Button) findViewById(R.id.stopButton);// 注冊事件startButton.setOnClickListener(serviceButtonClickListener);stopButton.setOnClickListener(serviceButtonClickListener);}OnClickListener serviceButtonClickListener = new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch (v.getId()) {case R.id.startButton:// 啟動ServiceSystem.out.println("--startButtonClick()");Intent startIntent = new Intent();startIntent.setClass(MainActivity.this, MyService.class);startService(startIntent);break;case R.id.stopButton:// 停止ServiceSystem.out.println("--stopButtonClick()");Intent stopIntent = new Intent();stopIntent.setClass(MainActivity.this, MyService.class);stopService(stopIntent);break;default:break;}}};}
運行輸出結果:


注意:從以上輸出可以看出,當第一次啟動Service時,會調用該Service 的構造方法和onCreate()方法,而之后的再次啟動Service 都不會再調用這兩個方法了。只有當停止該Service 之后,再次啟動Service 時,才會再次調用這兩個方法。

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的Service基本组成 (一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。