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>
  • 相关阅读:
    STM32低功耗模式与烟雾报警器触发信号电路设计
    cocos2d-x的环境的搭建
    window8.1中用户的管理员权限的提升方法
    cmd中目录的变更
    js的传值,table中tr的遍历,js中动态创建数组
    究竟什么是游戏引擎?
    大型网站架构学习心德
    关于listView 中的聚焦问题
    android6.0 适配的问题——activity销毁的问题
    文件发送成功率低的问题(2)
  • 原文地址:https://www.cnblogs.com/yshyee/p/3627208.html
Copyright © 2011-2022 走看看