zoukankan      html  css  js  c++  java
  • Service、Alarm与BroadcastReceiver的使用方法

    1:定义一个服务类,在服务类中使用AlarmManager 来管理服务的运行

    public class WtacService extends Service{
        private AlarmManager alarmManager = null;
        private PendingIntent alarmIntent = null;
        
        @Override
        public IBinder onBind(Intent arg0) {
            return null;
        }
        
        @Override
        public void onCreate() {
            super.onCreate();
            alarmManager = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE);
            String ALARM_ACTION = WR.ACTION_WTAC_ALAEM;
            Intent intentTo = new Intent(ALARM_ACTION);
            alarmIntent = PendingIntent.getBroadcast(this, 0, intentTo, 0);
        }
    
        @Override
        public int onStartCommand(Intent intent, int flags, int startId) {
            final Context context = this.getApplicationContext();
            
            int alarmType = AlarmManager.ELAPSED_REALTIME_WAKEUP;
            long timeRepeat = SystemClock.elapsedRealtime()+(10*1000);
            long intervalMillis = 10*1000;
            alarmManager.setInexactRepeating(alarmType, timeRepeat, intervalMillis, alarmIntent);
            
            Thread mThread = new Thread(new Runnable(){
                @Override
                public void run() {
                    try{
                        DBManager dbManager = new DBManager(context);
                        List<Wtac> list = dbManager.selectWtacs();
                        Gson gson = new Gson();
                        String json = gson.toJson(list, new TypeToken<List<Wtac>>(){}.getType());
                        System.out.println("结果:"+json);
                    }finally{
                        //服务每次执行完成就关闭
                        stopSelf();
                    }
                }
            });
            mThread.start();
            
            return Service.START_NOT_STICKY;
        }
    }

    2:在AndroidManifest.xml文件中注册这个Service

    <service
                android:name="com.wzh.service.WtacService"
                android:enabled="true"
                android:exported="false" />

    3:定义广播接收器

    public class WtacAlarmReceiver extends BroadcastReceiver{
        @Override
        public void onReceive(Context context, Intent intent) {
            Intent startIntent = new Intent(context, WtacService.class);
            context.startService(startIntent);
        }
    }

    4:在AndroidManifest.xml文件中注册这个广播接收器

    <receiver android:name="com.wzh.receiver.WtacAlarmReceiver"
                android:enabled="true"
                android:exported="false">
                <intent-filter>
                    <action android:name="com.wzh.receiver.ACTION_WTAC_ALAEM"/>
                </intent-filter>
            </receiver>
  • 相关阅读:
    Linux下svn服务器搭建
    mybatis-generator自动生成代码插件使用详解
    java中Class.forName("xxx")和ClassLoader().loadClass("xxx")的区别
    ExecutorService中submit()和execute()的区别
    Redis学习总结(1)——数据持久化
    Java内存模型及性能优化
    (转)Lock和synchronized比较详解
    SpringBoot中获取spring.profiles.active
    SpringBoot添加拦截器
    SpringBoot与Kafka集成
  • 原文地址:https://www.cnblogs.com/yshyee/p/3627208.html
Copyright © 2011-2022 走看看