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

转载:http://blog.csdn.net/arui319

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

如何做到开机启动?

只要实现一个BroadcastReceiver,监听手机启动完成的事件ACTION_BOOT_COMPLETED即可。需要注意的是,好像不能用模拟器,要用手机测试。

那如何做到启动一个Service,并且在用户关闭后能自动又启动了呢?

一般的,都会在上面说到的BroadcastReceiver的实现里面,监听手机启动完成后,启动一个Service,这是一般的做法。问题是,用户可以关闭掉该Service。那么怎样才能使它被关闭掉以后,再次启动呢?聪明的你一定立即就想到了,如果不直接启动Service,而是启动一个timmer,或者alarmManager,然后每隔一段时间去启动Service,就可以了。

package com.arui.framework.android.daemonservice;    import android.app.AlarmManager;  import android.app.PendingIntent;  import android.content.BroadcastReceiver;  import android.content.Context;  import android.content.Intent;  import android.os.SystemClock;    public class BootBroadcast extends BroadcastReceiver {        @Override      public void onReceive(Context context, Intent mintent) {            if (Intent.ACTION_BOOT_COMPLETED.equals(mintent.getAction())) {              // 启动完成              Intent intent = new Intent(context, Alarmreceiver.class);              intent.setAction("arui.alarm.action");              PendingIntent sender = PendingIntent.getBroadcast(context, 0,                      intent, 0);              long firstime = SystemClock.elapsedRealtime();              AlarmManager am = (AlarmManager) context                      .getSystemService(Context.ALARM_SERVICE);                // 10秒一个周期,不停的发送广播              am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstime,                      10 * 1000, sender);          }        }  } 

package com.arui.framework.android.daemonservice;    import android.content.BroadcastReceiver;  import android.content.Context;  import android.content.Intent;    public class Alarmreceiver extends BroadcastReceiver {      @Override      public void onReceive(Context context, Intent intent) {            if (intent.getAction().equals("arui.alarm.action")) {              Intent i = new Intent();              i.setClass(context, DaemonService.class);              // 启动service               // 多次调用startService并不会启动多个service 而是会多次调用onStart              context.startService(i);          }      }  } 
    package com.arui.framework.android.daemonservice;            import android.app.Service;      import android.content.Intent;      import android.os.IBinder;      import android.util.Log;            public class DaemonService extends Service {                @Override          public IBinder onBind(Intent intent) {              return null;          }                @Override          public void onCreate() {              super.onCreate();              Log.v("=========", "***** DaemonService *****: onCreate");          }                @Override          public void onStart(Intent intent, int startId) {              Log.v("=========", "***** DaemonService *****: onStart");              // 这里可以做Service该做的事          }      }  

    <receiver           android:name=" com.arui.framework.android.daemonservice.BootBroadcast"          android:permission="android.permission.RECEIVE_BOOT_COMPLETED">          <intent-filter>              <action android:name="android.intent.action.BOOT_COMPLETED" />          </intent-filter>      </receiver>      <receiver           android:name=" com.arui.framework.android.daemonservice.Alarmreceiver" >          <intent-filter>              <action android:name="arui.alarm.action" />          </intent-filter>      </receiver>            <service                android:name=" com.arui.framework.android.daemonservice.DaemonService" >            </service>  




更多相关文章

  1. Android手机开发:开机自动启动程序
  2. android 手机获取当前连接的wifi配置信息
  3. android 获取手机系统信息
  4. js判断手机系统类型
  5. Android 获取手机的一些基本信息类
  6. Android重启应用和重启手机
  7. android监听手机网络连接状态改变的后台服务
  8. java/android查询手机固话归属地、GSM卡信息
  9. centos 7 安装android 模拟器genymotion

随机推荐

  1. 实习入职第十六天:android:ellipsize="end"
  2. 【Android】解决 AndroidStudio使用 goog
  3. 干货文章整理(建议有时间多看几遍)
  4. EditText 只能输入数字字母
  5. Android 访问Http被限制解决方法
  6. android:报Activity has leaked IntentRe
  7. 几种常用的适配器--Adapter
  8. Android 监听前台后台切换
  9. Unity各平台上读写文件-Android例子
  10. Android Usb源码分析