说起来真是羞愧,以前手机经常开机的时候,不会有任何QQ消息通知 ,但是我打开QQ,然后关掉以后,每隔一段时间,就会QQ提示一下消息,搞不明白是什么原理。直到昨天才明白原来是QQ的服务没有真正关掉。
查看手机service的方法:设置:应用:服务
Service是Android中重要的四大组件之一, 但是一直不怎么了解,昨天研究了一下,写了个小例子。
先介绍一下:Service跟Activity不同,基本不会出现在界面上跟大家进行交互,都是通过后台运行,最大的好处就是如果Activity运行中onDestroy了, service可以不受影响。
start启动的service,当前activity销毁,service不会停止
bind 启动的service,当前activity销毁,service会停止
下面上带代码:
查看手机service的方法:设置:应用:服务
Service是Android中重要的四大组件之一, 但是一直不怎么了解,昨天研究了一下,写了个小例子。
先介绍一下:Service跟Activity不同,基本不会出现在界面上跟大家进行交互,都是通过后台运行,最大的好处就是如果Activity运行中onDestroy了, service可以不受影响。
start启动的service,当前activity销毁,service不会停止
bind 启动的service,当前activity销毁,service会停止
下面上带代码:
import android.app.Activity; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.os.Bundle; import android.os.IBinder; import android.view.View; import android.view.View.OnClickListener; public class MainActivity extends Activity implements OnClickListener,ServiceConnection{ Intent intent; private MyService myservice = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.but1).setOnClickListener(this); findViewById(R.id.but2).setOnClickListener(this); findViewById(R.id.but3).setOnClickListener(this); findViewById(R.id.but4).setOnClickListener(this); findViewById(R.id.but5).setOnClickListener(this); intent = new Intent(this,MyService.class); } @Override public void onClick(View arg0) { switch (arg0.getId()) { case R.id.but1: System.out.println("==========="); startService(intent); break; case R.id.but2: stopService(intent); break; case R.id.but3: bindService(intent, this, Context.BIND_AUTO_CREATE); break; case R.id.but4: unbindService(this); myservice = null; break; case R.id.but5: if(myservice!=null){ System.out.println(myservice.getcurrentnum()); } break; default: break; } } @Override public void onServiceConnected(ComponentName arg0, IBinder arg1) { System.out.println("Service onServiceConnected"); myservice = ((MyService.MyIBinder) arg1).getService(); } @Override public void onServiceDisconnected(ComponentName arg0) { System.out.println("Service onServiceDisconnected"); } }
import java.util.Timer; import java.util.TimerTask; import android.app.Service; import android.content.Intent; import android.os.Binder; import android.os.IBinder; public class MyService extends Service{ private MyIBinder myibinder = new MyIBinder() ; private Timer timer = null; private TimerTask timertask = null; private int i = 0; public class MyIBinder extends Binder{ public MyService getService(){ return MyService.this; } } @Override public IBinder onBind(Intent arg0) { System.out.println("Service onBind"); return myibinder; } @Override public void onCreate() { super.onCreate(); System.out.println("Service onCreate"); startTimer(); } private void startTimer() { if(timer == null){ timer = new Timer(); timertask = new TimerTask() { @Override public void run() { i++; System.out.println(i); } }; timer.schedule(timertask, 1000, 1000); } } @Override public void onDestroy() { super.onDestroy(); System.out.println("Service onDestroy"); stopTimer(); } private void stopTimer() { if(timer !=null){ timer.cancel(); timertask.cancel(); timer=null; timertask=null; } } public int getcurrentnum(){ return i; } }
<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" tools:context=".MainActivity" > <Button android:id="@+id/but1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="启用service" /> <Button android:id="@+id/but2" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="听用service" /> <Button android:id="@+id/but3" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="绑定service" /> <Button android:id="@+id/but4" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="解除绑定service" /> <Button android:id="@+id/but5" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="得到当前数字" /> </LinearLayout>
<application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.l302service.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="MyService"></service> </application>
发表评论
-
2048源码(核心算法有,缺少几个anctionbar,以后补上)
2014-09-25 13:22 15292048游戏基本上有四部分组成, 1:主activity,包含 ... -
android动画效果
2014-09-24 18:06 1147前几天弄alertdialog和popupwindow的时候, ... -
AlertDialog和PopupWindow
2014-09-18 15:44 1900区别:AlertDialog是非阻塞式对话框:AlertDia ... -
基础篇--resources资源
2014-09-12 15:18 539最近一直在做java开发,偶尔敲点android代码,突然发现 ... -
多点触摸(图片缩放为例)
2014-09-01 17:22 656多点触摸的事件跟单点是大同小异的,上个图片缩放的代码,供大家参 ... -
Toast的多种样式(附带Notification)
2014-09-01 13:48 943Toast以前用的时候一直以为只有文字提示,偶然得知也有多种样 ... -
Android Adapter详解(2)
2014-08-15 14:05 10以前Adapter一直用的不是太好,经过长时间的浸淫,现在可以 ... -
BroadcastReceiver简介
2014-08-14 16:27 674BroadcastReceiver作为四大 ... -
在开发过程中易出的错误
2014-08-13 16:53 4181:如果继承ListActivity,那么layout中必须有 ... -
多媒体的浅尝辄止
2014-08-12 15:57 537下面简单讲几种Android的多媒体技术,音频,视频,摄像头, ... -
Sqlite无脑使用
2014-08-11 14:56 889不会sqlite的人再也不用愁了,无脑使用,只要会粘贴复制就O ... -
android弹出框
2014-08-11 11:23 519不得不说,android自带的弹出框真心丑,而且还不好用,接下 ... -
android几种数据存储方式
2014-08-11 10:45 712android数据存储方式 1:SharedPreferen ... -
SQLiteOpenHelper和ContentProvider区别
2014-08-06 15:08 1440Android中操作数据库主要有两种方法:使用SQLiteOp ... -
xml文件解析SAX
2014-08-05 13:45 504xml文件解析:xml文件解析有四种方式, 1.DOM生成和解 ... -
Android不常用代码(1)
2014-07-31 18:07 544目录 1:Webview 2:js交互 1:Web ... -
系统窗口的调用
2014-07-31 15:46 471直接上代码吧,intent进行调用 @Override ... -
fragment简单实用及数据传递(2)
2014-07-31 15:13 2550FragmentTransaction 进行数据传递 imp ... -
ActionBar简介
2014-07-31 10:47 714Action bar是一个标识应用程序和用户位置的窗口功能,并 ... -
fragment简单实用及数据传递(1)
2014-07-30 16:29 738Fragment的使用相关 使用Fragment时,需要继承 ...
相关推荐
在Android开发中,Service是四大组件之一,它在后台运行,不与用户界面直接交互,常用于执行长时间的任务,如播放音乐、网络通信等。本篇文章将深入解析"android service 简单实例源代码",帮助你理解如何在Android...
这个名为"Android_Service.rar"的压缩包包含了一个关于Android Service的示例项目,可以帮助我们深入理解如何创建和使用Service,以及它与Activity之间的交互。 首先,让我们了解什么是Android Service。Service是...
本教程的“android-tutorial”可能包含了一系列关于Android Service的实例代码和详细解释,涵盖从基础到进阶的各种应用场景,对于理解和掌握Service的使用非常有帮助。通过学习和实践这些示例,开发者能够更好地应对...
在Android开发中,Service是应用组件之一,它可以在后台长时间运行,即使用户界面不在活动状态。Service主要用于执行长时间运行的任务,如音乐播放、网络通信等。而`Toast`则是一种轻量级的通知方式,用于显示短暂的...
在Android应用开发中,Service是四大组件之一,它在后台执行长时间运行的操作,不与用户界面直接交互。本讲解文档将深入探讨Local Service和Remote Service的实现与使用,以及广播接收器的重要作用。 首先,我们来...
在Android应用开发中,`Service`和`Activity`是两个重要的组件。`Service`用于在后台执行长时间运行的任务,而`Activity`则负责用户界面交互。在某些场景下,我们可能需要在`Service`和`Activity`之间传递数据,比如...
在Android应用开发中,Service是四大组件之一,用于在后台执行长时间运行的操作,即使用户界面不在活动状态。本文将通过四个小实例详细介绍Android Service的四种启动方式:启动方式、绑定方式、线程方式以及AIDL...
在Android应用开发中,Service是四大组件之一,用于在后台执行长时间运行的操作,即使用户界面关闭也能继续工作。本篇文章将深入探讨`startService`类型的Android Service,通过一个简单的实例来展示其工作原理和...
在Android应用开发中,Service和EventBus是两个重要的组件,它们在实现后台任务处理和界面交互方面发挥着关键作用。Service用于在后台长时间运行任务,而EventBus则是一种优秀的事件总线框架,使得组件间通信更为...
在Android应用开发中,Service是四大组件之一,它在后台长时间运行,不依赖于任何用户界面,用于执行长时间运行的任务,如播放音乐、网络通信等。这篇博客"Android Service深入解析Demo"通过实例深入讲解了Service的...
在提供的文件名"ServiceActPrj"中,我们可以推测这是一个关于Service和Activity交互的项目实例。该项目可能包含了Service的实现,Activity的UI更新逻辑,以及BroadcastReceiver的使用代码。通过查看和分析这个项目,...
在Android开发中,Service是一种非常重要的组件,它可以在后台长时间运行,执行一些不需要与用户交互的任务。本示例中,我们关注的是如何利用Service来实现资源的异步下载,并且在下载完成后对ZIP文件进行解压。这个...
在Android应用开发中,`Service`和定时器是两个重要的组件,它们被广泛用于实现后台任务和周期性操作。本文将深入探讨`Android Service`和定时器的基本概念、使用方法以及如何结合它们来实现每3秒打印一次日志的功能...
"Android Service Demo"是一个示例项目,它展示了如何在Android应用中使用Service,尤其是结合AIDL(Android Interface Definition Language)来实现进程间通信(IPC,Inter-Process Communication)。 首先,我们...
Service在Android系统中扮演着重要的角色,它可以在后台长时间运行,即使用户离开应用界面,Service依然可以执行任务,如播放音乐、定时任务等。在QT for Android环境下创建Service,可以帮助开发者充分利用Qt的便利...
在Android应用开发中,Service是四大组件之一,用于在后台长时间运行操作,比如播放音乐、网络通信等。然而,如果不加以控制,用户或者系统可能会多次启动同一个Service,导致不必要的资源消耗和服务的异常行为。本...
在Android应用开发中,`Service` 是一个非常重要的组件,它允许应用程序在后台长时间运行操作,即使用户已经离开或关闭了应用界面。本教程将详细讲解如何利用Android的`Service` 组件来实现文件下载功能。 一、...
Service是Android系统中的一个重要组件,它是应用程序框架的一部分,允许开发者在后台执行长时间运行的操作而无需与用户交互。这篇博客文章将深入介绍Android Service类的基本概念、功能、生命周期以及如何在实际...
在Android应用开发中,Service是用于执行长时间运行操作的一个组件,比如后台下载任务。本教程将详细介绍如何使用Android Service来实现文件下载,并在前台显示进度,同时通过通知栏同步更新下载进度。 首先,我们...