- 浏览: 67499 次
- 性别:
- 来自: Mercury
最新评论
一、Service概念
1.Service是一个应用程序组件
2.Service没有图像化界面
3.Service通常用来处理一些好事比较长的操作
4.可以使用Service更新ContentProvider,发送Intent以及启动系统的通知等。
Service是Android中的服务,它与Activity不同,它是不能与用户交互的,不能自己启动的,运行在后台的程序,如果我们退出应用时,Service进程并没有结束,它仍然在后台运行。
二、Service不是什么
Service不是一个单独的进程,Service不是一个线程。和应用程序是在同一个进程中。
三、Service生命周期
Android Service的生命周期并不像Android中Activity那么复杂,因为它只继承了onCreate(),onStart(),onDestroy()三个方法,当我们第一次启动Service时,先后调用了onCreate(),onStart()这两个方法,当停止Service时,则执行onDestroy()方法,这里需要注意的是,如果Service已经启动了,当我们再次启动Service时,不会在执行onCreate()方法,而是直接执行onStart()方法。
四、启动和停止Service的方法
例子程序:
TestService.java
package com.android.service; import android.app.Service; import android.content.Intent; import android.os.IBinder; public class TestService extends Service { @Override public IBinder onBind(Intent arg0) { System.out.println("TestService --> onBind"); return null; } @Override public void onCreate() { System.out.println("TestService --> onCreate"); super.onCreate(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { System.out.println("TestService --> onStartCommand"); return super.onStartCommand(intent, flags, startId); } @Override public void onDestroy() { System.out.println("TestService --> onDestroy"); super.onDestroy(); } @Override public boolean onUnbind(Intent intent) { System.out.println("TestService --> onUnbind"); return super.onUnbind(intent); } }
ServiceActivity.java
package com.android.activity; import android.app.Activity; import android.content.ComponentName; import android.content.Intent; import android.os.Bundle; import android.os.IBinder; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.content.ServiceConnection; import com.android.service.TestService; public class ServiceActivity extends Activity { private Button startService = null; private Button stopService = null; private Button bindService = null; private Button unbindService = null; private MyServiceConnection myServiceConnection = new MyServiceConnection();; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); startService = (Button)findViewById(R.id.startService); stopService = (Button)findViewById(R.id.stopService); bindService = (Button)findViewById(R.id.bindService); unbindService = (Button)findViewById(R.id.unbindService); startService.setOnClickListener(new StartServiceListener()); stopService.setOnClickListener(new StopServiceListener()); bindService.setOnClickListener(new BindServiceListener()); unbindService.setOnClickListener(new UnbindServiceListener()); } class StartServiceListener implements OnClickListener{ public void onClick(View v) { Intent intent = new Intent(); intent.setClass(ServiceActivity.this, TestService.class); startService(intent); } } class StopServiceListener implements OnClickListener{ public void onClick(View v) { Intent intent = new Intent(); intent.setClass(ServiceActivity.this, TestService.class); stopService(intent); } } class BindServiceListener implements OnClickListener{ public void onClick(View v) { Intent intent = new Intent(); intent.setClass(ServiceActivity.this, TestService.class); bindService(intent, myServiceConnection, BIND_AUTO_CREATE); } } class UnbindServiceListener implements OnClickListener{ public void onClick(View v) { unbindService(myServiceConnection); } } //这里需要用到ServiceConnection在Context.bindService和 //context.unBindService()里用到 class MyServiceConnection implements ServiceConnection{ public void onServiceConnected(ComponentName name, IBinder service) { System.out.println("ServiceActivity --> onServiceConnected"); } public void onServiceDisconnected(ComponentName name) { System.out.println("ServiceActivity --> onServiceDisconnected"); } } }
AndroidManifest.java
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.activity" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="10" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".ServiceActivity" 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.android.service.TestService" android:exported="true"></service> </application> </manifest>
运行结果:
点击启动服务按钮:
此时可以在Setting/Application/Running Services里面查看我们的服务。
依次点击绑定服务、取消绑定服务、停止服务按钮:
发表评论
文章已被作者锁定,不允许评论。
-
Android40_Dialog
2011-11-14 00:11 2994Dialog是Android常用的对话框控件。AlertDia ... -
Android39_Clock和TimePicker
2011-11-14 00:08 2357一、AnalogClock和DigitalClock ... -
Android38_ImageView和Gallery
2011-11-14 00:07 3610一、ImageView使用方法 ImageVi ... -
Android37_JSON数据解析
2011-11-08 00:14 2345一、JSON介绍 JSON(JavaSc ... -
Android36_Animations使用(四)
2011-11-08 00:14 3417一、LayoutAnimationsContrlller ... -
Android35_Animations使用(三)
2011-11-08 00:13 2650一、AnimationSet的具体使用方法 ... -
Android34_Animations使用(二)
2011-11-08 00:12 1955在代码中使用Animations可以很方便的调试、运行 ... -
Android33_Animations使用(一)
2011-11-08 00:12 2283一、Animations介绍 Anima ... -
Android31_AppWidget使用(二)
2011-11-05 00:09 2504一、PendingIntent介绍 PendingIn ... -
Android30_AppWidget使用(一)
2011-11-05 00:08 2260一、App Widget定义 App ... -
Android32_Notification用法
2011-11-05 00:09 1885Android系统的状态栏(Status Bar)中有一 ... -
Android29_SeekBar和RatingBar
2011-11-02 23:21 2117一、使用SeekBar步骤: SeekB ... -
Android28_ExpandableListActivity
2011-11-02 23:21 1484ExpandableListActivity就是可扩展的 ... -
Android27_AutoCompleteTextView
2011-11-02 23:21 1088一、创建AutoCompleteTextView ... -
Android26_DatePicker
2011-11-02 23:20 1778一、DatePicker和DatePickerDialo ... -
Android25_Spinner使用方法
2011-11-02 23:20 2813一、创建Spinner的步骤 1.在布局 ... -
Android23_Socket编程
2011-10-18 22:19 1506一、什么是Socket Socket是基 ... -
Android22_WIFI网络操作
2011-10-18 22:12 1690一、什么是WIFI WIFI就是一种无线 ... -
Android21_广播机制(二)
2011-10-18 22:00 1003一、注册BroadcastReceiver的方法 ... -
Android20_广播机制(一)
2011-10-18 21:48 1076一、Android广播机制介绍 Android:操作系统 ...
相关推荐
在本文中,我们将重点关注"25_Service初步(一)"中的Socket编程,这是Android应用程序与其他设备进行网络通信的重要方式。 Socket,通常称为套接字,是网络通信的基础。它提供了一种进程间通信(IPC,Inter-...
【AndroidDriver-master_layers2x3_简单android源码_android...总之,这个项目为初学者提供了一个基础的Android应用实例,通过研究和实践,可以帮助他们建立起对Android开发的初步认识,并逐步深入到更复杂的应用场景。
在Android系统中,服务(Service)是四大组件之一,它用于在后台长时间运行,执行一些不与用户交互的任务。在本案例"my_service_driver.rar"中,我们将深入探讨如何自定义一个Service,以及如何结合JNI(Java Native...
【描述详解】: 描述提到,“这里是几个很简单和基础的android2.3.x的初步开发程序源码”,意味着这个压缩包中包含的代码主要是面向初学者或用于教学,涵盖了Android 2.3.x平台的基础开发知识。"基于eclipse模拟机...
在Android开发中,Service是应用程序组件之一,常用于在后台执行长时间运行的任务,不与用户界面直接交互。数据绑定是Service与Activity之间通信的一种有效方式,尤其在需要频繁交互或实时更新数据的情况下。以下是...
Stage2_Lesson5Service初步 Stage2_Lesson10应用程序签名及发布 Stage2_Lesson8ContentProvider Stage2_Lesson9BroadcastReceiver Stage2_Lesson6神奇的UI我来了 Stage2_Lesson7Android数据存储 Stage3_Lesson1App...
Stage2_Lesson5Service初步 Stage2_Lesson10应用程序签名及发布 Stage2_Lesson8ContentProvider Stage2_Lesson9BroadcastReceiver Stage2_Lesson6神奇的UI我来了 Stage2_Lesson7Android数据存储 Stage3_Lesson1App...
Stage2_Lesson5Service初步 Stage2_Lesson10应用程序签名及发布 Stage2_Lesson8ContentProvider Stage2_Lesson9BroadcastReceiver Stage2_Lesson6神奇的UI我来了 Stage2_Lesson7Android数据存储 Stage3_Lesson1App...
Stage2_Lesson5Service初步 Stage2_Lesson10应用程序签名及发布 Stage2_Lesson8ContentProvider Stage2_Lesson9BroadcastReceiver Stage2_Lesson6神奇的UI我来了 Stage2_Lesson7Android数据存储 Stage3_Lesson1App...
Stage2_Lesson5Service初步 Stage2_Lesson10应用程序签名及发布 Stage2_Lesson8ContentProvider Stage2_Lesson9BroadcastReceiver Stage2_Lesson6神奇的UI我来了 Stage2_Lesson7Android数据存储 Stage3_Lesson1App...
1. **代码结构分析**:了解项目的目录结构,找到主要的Activity、Service和BroadcastReceiver等组件。 2. **网络通信**:查看网络请求相关的类和方法,理解数据如何与服务器或设备交换。 3. **硬件交互**:研究与...
Stage2_Lesson5Service初步 Stage2_Lesson10应用程序签名及发布 Stage2_Lesson8ContentProvider Stage2_Lesson9BroadcastReceiver Stage2_Lesson6神奇的UI我来了 Stage2_Lesson7Android数据存储 Stage3_Lesson1App...
Stage2_Lesson5Service初步 Stage2_Lesson10应用程序签名及发布 Stage2_Lesson8ContentProvider Stage2_Lesson9BroadcastReceiver Stage2_Lesson6神奇的UI我来了 Stage2_Lesson7Android数据存储 Stage3_Lesson1App...
Stage2_Lesson5Service初步 Stage2_Lesson10应用程序签名及发布 Stage2_Lesson8ContentProvider Stage2_Lesson9BroadcastReceiver Stage2_Lesson6神奇的UI我来了 Stage2_Lesson7Android数据存储 Stage3_Lesson1App...
Stage2_Lesson5Service初步 Stage2_Lesson10应用程序签名及发布 Stage2_Lesson8ContentProvider Stage2_Lesson9BroadcastReceiver Stage2_Lesson6神奇的UI我来了 Stage2_Lesson7Android数据存储 Stage3_Lesson1App...
Stage2_Lesson5Service初步 Stage2_Lesson10应用程序签名及发布 Stage2_Lesson8ContentProvider Stage2_Lesson9BroadcastReceiver Stage2_Lesson6神奇的UI我来了 Stage2_Lesson7Android数据存储 Stage3_Lesson1App...
Stage2_Lesson5Service初步 Stage2_Lesson10应用程序签名及发布 Stage2_Lesson8ContentProvider Stage2_Lesson9BroadcastReceiver Stage2_Lesson6神奇的UI我来了 Stage2_Lesson7Android数据存储 Stage3_Lesson1App...
Stage2_Lesson5Service初步 Stage2_Lesson10应用程序签名及发布 Stage2_Lesson8ContentProvider Stage2_Lesson9BroadcastReceiver Stage2_Lesson6神奇的UI我来了 Stage2_Lesson7Android数据存储 Stage3_Lesson1App...
Stage2_Lesson5Service初步 Stage2_Lesson10应用程序签名及发布 Stage2_Lesson8ContentProvider Stage2_Lesson9BroadcastReceiver Stage2_Lesson6神奇的UI我来了 Stage2_Lesson7Android数据存储 Stage3_Lesson1App...
Stage2_Lesson5Service初步 Stage2_Lesson10应用程序签名及发布 Stage2_Lesson8ContentProvider Stage2_Lesson9BroadcastReceiver Stage2_Lesson6神奇的UI我来了 Stage2_Lesson7Android数据存储 Stage3_Lesson1App...