第一行代码笔记 全局获取context,定时任务,日志打印
来源:互联网 发布:淘宝网京东商城茅台酒 编辑:程序博客网 时间:2024/06/05 16:47
1.日志打印帮助类
//打印帮助类public class LogUtil { public static final int VERBOSE = 1; public static final int DEBUG = 2; public static final int INFO = 3; public static final int WARN = 4; public static final int ERROR = 5; public static final int NOTHING = 6; public static final int level = VERBOSE; public static void v(String tag, String msg) { if (level <= VERBOSE) { Log.v(tag,msg); } } public static void d(String tag, String msg) { if (level <= DEBUG) { Log.d(tag,msg); } } public static void i(String tag, String msg) { if (level <= INFO) { Log.i(tag,msg); } } public static void w(String tag, String msg) { if (level <= WARN) { Log.w(tag,msg); } } public static void e(String tag, String msg) { if (level <= ERROR) { Log.e(tag,msg); } }}
2:获取全局的context
//记得在清单文件里进行指定,要加完整的包名public class MyApplication extends Application { private static Context context; @Override public void onCreate() { context = getApplicationContext(); }// 全局获取context public static Context getContext() { return context; }}3.定时任务
//创建定时任务/** * 定时任务一般有两种 java里的Timer和android的Alarm机制,效果差不多 * 但是timer不适合长时间在后台运行的定时任务,因为手机都有省电措施,在长时间不用,手机就会 * 自动让cup睡眠,这样timer可能无法使用,Alarm具有唤醒cpu功能,大多数情况下都能正常用 * 唤醒cpu和唤醒屏幕不一样。 */public class TimeService extends Service { public TimeService() { } @Override public IBinder onBind(Intent intent) { // TODO: Return the communication channel to the service. throw new UnsupportedOperationException("Not yet implemented"); } @Override public int onStartCommand(Intent intent, int flags, int startId) { new Thread(new Runnable() { @Override public void run() {// 这里执行具体逻辑操作 } }).start();// 下面执行:一旦这个服务被启动了,就可以保证这个服务的onStartCommand方法每隔一小时执行一次。 AlarmManager manager = (AlarmManager) getSystemService(ALARM_SERVICE); int anHour = 60 * 60 * 1000;//这是一小时的毫秒数// SystemClock.elapsedRealtime()获取到系统开机至今// System.currentTimeMillis()获取1970-1-1 0点至今所经历的毫秒数 long triggerAtTime = SystemClock.elapsedRealtime() + anHour; Intent i = new Intent(this, TimeService.class); PendingIntent pi = PendingIntent.getService(this, 0, i, 0);// 参数1:指定AlarmManager的工作类型,有四种可选// (1)ELAPSED_REALTIME_WAKEUP: 让定时任务的触发时间从系统开机算起,会唤醒cpu// (2)ELAPSED_REALTIME:让定时任务的触发时间从系统开机算起,但不会唤醒cpu// (3)RTC表示从1970-1-1 0点开始算,不唤醒cpu// (4) RTC_WAKEUP表示从1970-1-1 0点开始算,唤醒cpu// 参数2:定时任务触发的时间,如果1是开机时间算起,则这个时间是开启时间至今加触发时间,如果是1970那个计算方式类似// 参数3:这里调用getService方法或者getBroadcast来获取一个能够执行服务或广播的PendingIntent// 这样当任务被触发时,服务的onStartCommand方法或广播接收者的onReceive()才能得到执行// 注意这里android4.4 Alarm时间变得不准确,要准确的换把set换成setExact.这是为了省电,系统会自动检测目前的alarm将触发时间// 相近的任务放在一起执行,这样可以减少cpu唤醒次数达到省电。 manager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, triggerAtTime, pi); return super.onStartCommand(intent, flags, startId); } /** * Doze模式 * 当用户是6.0以上系统时,如果改设备未插电源,处于屏幕关闭一段时间后,就会进入Doze模式 * 他是间歇性出现的,设备进入Doze模式时间越长,间歇性退出Doze模式时间间隔也会越长。Doze * 会(1)禁止访问网络。(2)忽略唤醒cpu或者屏幕(3)不再执行wifi扫描(4)不再执行同步服务 * (5)alarm任务将会在下次退出Doze模式的时候才执行。这时候又会导致alarm不准时。将set换成 * setAndAllowWhileIdle或者setExactAndAllowWhileIdle */}
0 0
- 第一行代码笔记 全局获取context,定时任务,日志打印
- <<第一行代码>>--全局获取Context技巧
- android 全局获取Context的技巧 《第一行代码》
- 第一行代码-13.1 全局获取Context的技巧
- 第一行代码学习笔记---学习任务清单与列表
- 第一行代码笔记7:调试和日志
- 第一行代码-笔记
- 《第一行代码》笔记
- 第一行代码笔记
- 第一行代码-9.6 服务的最佳实践--后台执行的定时任务
- 安卓实现随时获取Context(来自《第一行代码》)
- 定义全局的Context和定义自己的打印日志
- Android学习笔记--全局获取Context
- 《Android第一行代码》笔记
- 《第一行代码Android》笔记
- 第一行代码笔记1
- 第一行代码笔记2
- 第一行代码笔记3
- test
- 10分钟玩转JQ
- JAVA 入坑教程 | 章节九 详解java的装箱和拆箱
- thinkphp 安装memcache 以及测试(windows764位下)
- 并发系列文章
- 第一行代码笔记 全局获取context,定时任务,日志打印
- java基础.集合.properties.初识
- Android5 Lollipop 中关于 SELinux 安全机制调试笔记
- 访问maven项目总是报404
- Android杂谈(21)补坑+Path动画
- selenium+testng+gitblit+jenkins+ant自动化测试系列六:eclipse上传代码到服务器
- 4. Median of Two Sorted Arrays
- java自带工具keytool生成keystore
- JavaIO输入输出流的总结