android开发教程之开机启动服务service示例

个例子实现的功能是:
1,安装程序后看的一个Activity程序界面,里面有个按钮,点击按钮就会启动一个Service服务,此时在设置程序管理里面会看的有个Activity和一个Service服务运行
2,如果手机关机重启,会触发你的程序里面的Service服务,当然,手机启动后是看不到你的程序界面。好比手机里面自带的闹钟功能,手机重启看不到闹钟设置界面
只是启动服务,时间到了,闹钟就好响铃提醒。

程序代码是:

首先要有一个用于开机启动的Activity,给你们的按钮设置OnClickListener();

代码如下:

public class MainActivity extends Activity {
 private Button btnstarted = null;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
     btnstarted = (Button)findViewById( R.id.btnstarted);
     btnstarted.setOnClickListener(new OnClickListener() {
   public void onClick(View v) {
    Intent intent = new Intent(MainActivity.this,StartService.class);
    startService(intent);
    Toast.makeText(MainActivity.this, "服务启动成功", Toast.LENGTH_LONG).show();
   }};}
}

我们要编写一个BroadcastReceiver用以捕获ACTION_BOOT_COMPLETED这条广播,并在捕获之后启动我们要启动的服务StarServie.class

代码如下:

public class BootCompletedReceiver extends BroadcastReceiver{
 public void onReceive(Context context, Intent intent) {
  if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)){
   Intent newIntent = new Intent(context,StartService.class);
   context.startService(newIntent);
  }
 }
}

启动服务Service代码

代码如下:

public class StartService extends Service{
 //public static String PHONENO;

public class LocalBinder extends Binder{
  StartThief getService(){
   return StartService.this;
  }
 }
 public IBinder onBind(Intent intent){
  return mBinder;
 }
 private void registerIntentReceiver(){
  //此处添加启动服务要执行的操作代码
 }
 public void onStart(Intent intent,int startId){
  super.onStart(intent, startId);
 }
    @Override
    public void onCreate() {
  registerIntentReceiver();
    }
}

用到的Main.xml,里面只有一个Button ,id是btnstarted


代码如下:

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
 android:id="@+id/AbsoluteLayout01"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 xmlns:android="http://schemas.android.com/apk/res/android">
 <Button android:layout_height="wrap_content"
 android:id="@+id/btnstarted"
 android:text="@string/started"
 android:layout_y="118dip"
 android:layout_width="wrap_content"
 android:layout_x="56dip">
 </Button>
</AbsoluteLayout>

在AndroidManifest.xml配置文件中注册我们的BroadcastReceiver和服务Service


代码如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
 package="com.thief" android:versionCode="1"
 android:versionName="1.0">
 <application android:icon="@drawable/icon"
  android:label="@string/app_name">
  <activity android: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 android:name=".StartService"></service>
                //为了获取开机启动这个动作,必须注册加上android.intent.action.BOOT_COMPLETED
  <receiver android:name=".BootCompletedReceiver">
   <intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED">        
    </action>
   </intent-filter>
  </receiver> 
 </application>
 获取开机启动动作的权限permission
 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>"
</manifest>

(0)

相关推荐

  • 浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路

    上一篇文章Android进程间通信(IPC)机制Binder简要介绍和学习计划简要介绍了Android系统进程间通信机制Binder的总体架构,它由Client.Server.Service Manager和驱动程序Binder四个组件构成.本文着重介绍组件Service Manager,它是整个Binder机制的守护进程,用来管理开发者创建的各种Server,并且向Client提供查询Server远程接口的功能. 既然Service Manager组件是用来管理Server并且向Client提

  • Android 通过webservice上传多张图片到指定服务器详解

    Android 通过webservice上传多张图片到指定服务器详解 当你浏览这个的时候相信你对webservice的基本应用已经有一定的了解了,若是还没有明白的小伙伴,可以看我前面写的文章点击打开链接,这几天在开发一款app,需要上传图片到指定服务器吧,但是我刚开始以为在网上面应该有这样的好文章的吧,结果我在网络上找了好多代码,在传递图片的过程中,遇到各种bug,真是国人的东西就是喜欢复制别人的,自己不动手检验一下代码的正确性,哎,我也是无语了,然后我决定花点时间来填补一下这个空缺,写了这一片

  • Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路

    在前面一篇文章浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路中,介绍了Service Manager是如何成为Binder机制的守护进程的.既然作为守护进程,Service Manager的职责当然就是为Server和Client服务了.那么,Server和Client如何获得Service Manager接口,进而享受它提供的服务呢?本文将简要分析Server和Client获得Service Manager的过程. 在阅读本文之前,希望读者

  • Android四大组件之Service(服务)实例详解

    本文实例讲述了Android四大组件之服务用法.分享给大家供大家参考,具体如下: 很多情况下,一些与用户很少需要产生交互的应用程序,我们一般让它们在后台运行就行了,而且在它们运行期间我们仍然能运行其他的应用. 为了处理这种后台进程,Android引入了Service的概念.Service在Android中是一种长生命周期的组件,它不实现任何用户界面. 基本概念 Ÿ   Service是一种在后台运行,没有界面的组件,由其他组件调用开始. Ÿ   创建Service,定义类继承Service,An

  • Android中实现开机自动启动服务(service)实例

    最近在将 HevSocks5Client 移植到 Android 上了,在经过增加 signalfd 和 timerfd 相关的系统调用支持后,就可以直接使用 NDK 编译出 executable 了.直接的 native exectuable 在 Android 系统总还是不太方便用哦.还是做成一个 apk 吧,暂定只写一个 service 并开机自动启用,无 activity 的. Java 中调用 native 程序我选择使用 JNI 方式,直接在 JNI_OnLoad 方法中调用 pth

  • Android实现在ServiceManager中加入自定义服务的方法详解

    本文实例讲述了Android实现在ServiceManager中加入自定义服务的方法.分享给大家供大家参考,具体如下: 当我们要使用android的系统服务时,一般都是使用Context.getSystemService方法.例如我们要获取AudioManager,我们可以: AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 获取的服务,其实是在ServiceManager中注册的Binder服务,

  • Android 判断某个服务(service)是否运行

    判断某个服务是否正在运行的方法 实现代码: /** * * * @param mContext * @param serviceName * 是包名+服务的类名(例如:net.loonggg.testbackstage.TestService) * @return true代表正在运行,false代表服务没有正在运行 */ public boolean isServiceWork(Context mContext, String serviceName) { boolean isWork = f

  • Android中Service(后台服务)详解

    1.概念: (1).Service可以说是一个在后台运行的Activity.它不是一个单独的进程,它只需要应用告诉它要在后台做什么就可以了. (2).它要是实现和用户的交互的话需要通过通知栏或者是通过发送广播,UI去接收显示. (3).它的应用十分广泛,尤其是在框架层,应用更多的是对系统服务的调用. 2.作用: (1).它用于处理一些不干扰用户使用的后台操作.如下载,网络获取.播放音乐,他可以通过INTENT来开启,同时也可以绑定到宿主对象(调用者例如ACTIVITY上)来使用. (2).如果说

  • Android Service服务详细介绍及使用总结

    Android Service服务详解 一.Service简介 Service是android 系统中的四大组件之一(Activity.Service.BroadcastReceiver. ContentProvider),它跟Activity的级别差不多,但不能页面显示只能后台运行,并且可以和其他组件进行交互.service可以在很多场合的应用中使用,比如播放多媒体的时候用户启动了其他Activity这个时候程序要在后台继续播放,比如检测SD卡上文件的变化,再或者在后台记录你地理信息位置的改变

  • Android Service 服务不被杀死的妙招

    Service是android 系统中的一种组件,它跟Activity的级别差不多,但是他不能自己运行,只能后台运行,并且可以和其他组件进行交互. Android开发的过程中,每次调用startService(Intent)的时候,都会调用该Service对象的onStartCommand(Intent,int,int)方法,然后在onStartCommand方法中做一些处理. 从Android官方文档中,我们知道onStartCommand有4种int返回值,首先简单地讲讲int返回值的作用.

  • Android创建服务之started service详细介绍

    创建started service 应用组件(例如Activity)调用startService()来启动一个Service,将需要的参数通过Intent传给Service,Service将会在onStartCommand函数中获得Intent. 有两种方式可以创建started service,一种是扩展Service类,另外一种是扩展IntentService类 扩展Service       这是所有服务的基类.扩展这个类的时候,特别重要的一点是,需要创建一个新的线程来做服务任务,因为se

随机推荐