当前位置:  编程技术>移动开发
本页文章导读:
    ▪AudioFlinger 的一个小疑点        AudioFlinger 的一个小问题AudioFlinger 类开始的时候定义了 friend class BinderService<AudioFlinger>,为啥要定义一个这个呢,后面有个注视 // for AudioFlinger() 原来binderservice初始化的时候会new AudioFlinge.........
    ▪ (柯昌合)AlarmManager,Timer,Thread差别(柯昌合)        (柯昌合)AlarmManager,Timer,Thread区别(柯昌合) private void startAlarmService(){ Intent intent =new Intent(this, AlarmServiceBroadcastReceiver.class); intent.setAction("repeating"); sender=PendingIntent .getBroadcast(this, 0, intent.........
    ▪ 怎么编写       如何编写? 这种流程的程序该如何编写代码?(可编写简单示例)或要用到什么方面的知识?求解。1楼kangli_19905天前 12:23走过路过,不要错过。一起来探讨起来吧~~~~ ......

[1]AudioFlinger 的一个小疑点
    来源: 互联网  发布时间: 2014-02-18
AudioFlinger 的一个小问题

AudioFlinger 类开始的时候定义了

friend class BinderService<AudioFlinger>,为啥要定义一个这个呢,后面有个注视

// for AudioFlinger()

原来binderservice初始化的时候会new AudioFlinger出来,而audioflinger的构造函数的private,友元类就可以使用当前类的private方法了

来说说为啥要把构造函数设成private的

我觉得

1 是实现单例的好的方法

  构造函数是private,所以不能被构造对象,不能再栈上使用这个对象,类必须提供static 方法来使得外部能够得到这个对象,非常的像单例模式

2 可以控制构造和析构

   增加了新的接口 可以保证在初始化类之前和之后完成一些其他的操作

暂时想到这么多。

这样就知道了

在binder service中还可以用SERVICE::getInstance()来构造这个函数,当然需要增加新的接口


 


    
[2] (柯昌合)AlarmManager,Timer,Thread差别(柯昌合)
    来源: 互联网  发布时间: 2014-02-18
(柯昌合)AlarmManager,Timer,Thread区别(柯昌合)

	private void startAlarmService(){

		Intent intent =new Intent(this, AlarmServiceBroadcastReceiver.class);
		intent.setAction("repeating");
		sender=PendingIntent
				.getBroadcast(this, 0, intent, 0);
		//开始时间
		long firstime=SystemClock.elapsedRealtime();

		am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP
				, firstime, 20*1000, sender);
	}

AlarmManager,Timer,Thread区别

在android开发中,经常会用到定时触发某些操作,或者是间隔处理某件事

如闹钟,和后台定时请求数据:

    需要定时处理闹钟任务

    定时向服务器请求数据等

对于上述问题,我们可以通过定时器来完成,普遍的做法使用一个Thread来操作.也有使用Time实现定时操作

而android库里面也有一种全新的操作方式AlarmManager

那这几种方式有何区别呢

1.Thread:使用线程方式

2.Time是java的特性

3.AlarmManager:AlarmManager将应用与服务分割开来后,使得应用程序开发者不用 关心具体的服务,而是直接通过AlarmManager来使用这种服务。这也许就是客户/服务模式的好处吧。

第一种和第二种就不过多解释了,在此着重解释一下第三种

当我们在开发android程序时,有些用户会使用service来管理一些后台的任务,如网络操作,或者间断处理数据等,这些用户需要在用户关闭程序,或者关闭屏幕后也能处理后台任务,可android手机为了节省电池使用,当用户关闭屏幕后,会将cpu置于休眠状态,当休眠状态启动,我们的服务就处于暂停状态了.为了斛决这个问题,android库里就提供了一个AlarmManager的库,AlarmManager是客户/服务模式的模式,也就是说AlarmManager是由系统来管理,而不是我们应用程序的一部分,也就是说AlarmManager是全局的,当我们的程序启用AlarmManager后,就给系统注册了一个服务,该服务会根据你设置的参数定时的向你的应用程序发送消息(注意,此消息以广播方式发送).

AlarmManager的使用如下:

	private void startAlarmService(){

		Intent intent =new Intent(this, AlarmServiceBroadcastReceiver.class);
		intent.setAction("repeating");
		sender=PendingIntent
				.getBroadcast(this, 0, intent, 0);
		//开始时间
		long firstime=SystemClock.elapsedRealtime();

		am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP
				, firstime, 20*1000, sender);
		第一个参数设置cpu处理的方式:
		
  • public   static   final   int  ELAPSED_REALTIME  
  •         // 当系统进入睡眠状态时,这种类型的闹铃不会唤醒系统。直到系统下次被唤醒才传递它,该闹铃所用的时间是相对时间,是从系统启动后开始计时的,包括睡眠时 间,可以通过调用SystemClock.elapsedRealtime()获得。系统值是3    (0x00000003)。   
  •   
  •         public   static   final   int  ELAPSED_REALTIME_WAKEUP  
  •         //能唤醒系统,用法同ELAPSED_REALTIME,系统值是2 (0x00000002) 。   
  •   
  •         public   static   final   int  RTC  
  •         //当系统进入睡眠状态时,这种类型的闹铃不会唤醒系统。直到系统下次被唤醒才传递它,该闹铃所用的时间是绝对时间,所用时间是UTC时间,可以通过调用 System.currentTimeMillis()获得。系统值是1 (0x00000001) 。   
  •   
  •         public   static   final   int  RTC_WAKEUP  
  •         //能唤醒系统,用法同RTC类型,系统值为 0 (0x00000000) 。   
  •   
  •         Public static   final   int  POWER_OFF_WAKEUP  
  •         //能唤醒系统,它是一种关机闹铃,就是说设备在关机状态下也可以唤醒系统,所以我们把它称之为关机闹铃。使用方法同RTC类型,系统值为4(0x00000004)。  
  • }
    public class AlarmServiceBroadcastReceiver extends BroadcastReceiver{
    
    	@Override
    	public void onReceive(Context context, Intent intent) {
    		Log.d("AlarmServiceBroadcastReceiver", "收到一个闹钟定时器发来的广播333333");
    		context.startService(new Intent(context, AlarmService.class));
    	}
    
    }

    
    


        
    [3] 怎么编写
        来源: 互联网  发布时间: 2014-02-18
    如何编写?

    这种流程的程序该如何编写代码?(可编写简单示例)或要用到什么方面的知识?求解。

    1楼kangli_19905天前 12:23走过路过,不要错过。一起来探讨起来吧~~~~

        
    最新技术文章:
    ▪Android开发之登录验证实例教程
    ▪Android开发之注册登录方法示例
    ▪Android获取手机SIM卡运营商信息的方法
    ▪Android实现将已发送的短信写入短信数据库的...
    ▪Android发送短信功能代码
    ▪Android根据电话号码获得联系人头像实例代码
    ▪Android中GPS定位的用法实例
    ▪Android实现退出时关闭所有Activity的方法
    ▪Android实现文件的分割和组装
    ▪Android录音应用实例教程
    ▪Android双击返回键退出程序的实现方法
    ▪Android实现侦听电池状态显示、电量及充电动...
    ▪Android获取当前已连接的wifi信号强度的方法
    ▪Android实现动态显示或隐藏密码输入框的内容
    ▪根据USER-AGENT判断手机类型并跳转到相应的app...
    ▪Android Touch事件分发过程详解
    ▪Android中实现为TextView添加多个可点击的文本
    ▪Android程序设计之AIDL实例详解
    ▪Android显式启动与隐式启动Activity的区别介绍
    ▪Android按钮单击事件的四种常用写法总结
    ▪Android消息处理机制Looper和Handler详解
    ▪Android实现Back功能代码片段总结
    ▪Android实用的代码片段 常用代码总结
    ▪Android实现弹出键盘的方法
    ▪Android中通过view方式获取当前Activity的屏幕截...
    ▪Android提高之自定义Menu(TabMenu)实现方法
    ▪Android提高之多方向抽屉实现方法
    ▪Android提高之MediaPlayer播放网络音频的实现方法...
    ▪Android提高之MediaPlayer播放网络视频的实现方法...
    ▪Android提高之手游转电视游戏的模拟操控
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3