Service使用AlarmManager实现后台定时任务 在Android 4.0.3版本中, 使用AlarmManager实现后台定时任务是比较好的方案, 其实现机制, 是利用Service的 onStartCommand() 方法, 在每次被AlarmManager唤醒后, 执行任务并注册下一次唤醒到AlarmManager. 涉及的代码 1. 新建DaemonService, 实现 onStartCommand() 方法, 在这个方法中新开线程执行任务, 并再次将AlarmReceive…
Activity.Service和线程应该是Android编程中最常见的几种类了,几乎大多数应用程序都会涉及到这几个类的编程,自然而然的,也就会涉及到三者之间的相互通信,本文就试图简单地介绍一下这三者通信的方式. 想写这篇文章的起因是,笔者跟几个同学在做一个Android上的应用,起初代码写得很凌乱,因为我在Activity中直接创建了线程,去执行某些任务.但是我们知道线程可能需要运行的时间比较长,而Android在内存不足的时候,会将一些Activity销毁,这样线程就会失去了管理的对象,从而…
欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 作者:汪毅雄 导语: 本文描述了ContentProvider发布者和调用者这两在Framework层是如何实现的. 作为Android的四大组件之一,ContentProvider作为进程之间静态数据传递的重要手段,其在系统级别的应用中起了重大的作用.毫无疑问,ContentProvider核心机制之一也是Binder,但是和其它3大组件又有区别.因为ContentProvider涉及数据的增删查改,当数据量比较大的时候,继续用Parc…
Android 5.0 除了提供诸多新特性和功能外,还对系统和 API 行为做出了各种变更.本文重点介绍您应该了解并在开发应用时加以考虑的一些主要变更. 如果您之前发布过 Android 应用,请注意您的应用可能受到 Android 5.0 中这些变化的影响. 如需详细了解新平台功能,请参阅 Android Lollipop 重要内容. Android Runtime (ART) 在 Android 5.0 中,ART 运行时取代 Dalvik 成为平台默认设置.Android 4.4 中已引入…
Android 5.0程序运行报Service Intent must be explicit错误,原因是5.0的service必须显式调用 改成 Intent intent = new Intent(mContext, IService.class); 或者Intent intent = new Intent(): intent.setclass(xx.xx,xx.xx): 网上说的如下方式是不可行的: Intent intent = new Intent("com.xx.xx.Service…
有些时候我们使用Service的时需要采用隐私启动的方式,但是Android 5.0一出来后,其中有个特性就是Service Intent  must be explitict,也就是说从Lollipop开始,service服务必须采用显示方式启动.而android源码是这样写的(源码位置:sdk/sources/android-21/android/app/ContextImpl.java): private void validateServiceIntent(Intent service)…
extends:http://www.eoeandroid.com/thread-568853-1-1.html 本帖最后由 469874851 于 2015-3-11 18:15 编辑 有些时候我们使用Service的时需要采用隐私启动的方式,但是Android 5.0一出来后,其中有个特性就是Service Intent  must be explitict,也就是说从Lollipop开始,service服务必须采用显示方式启动.而android源码是这样写的(源码位置:sdk/source…
我的Android进阶之旅-->如何解决Android 5.0中出现的警告: java.lang.IllegalArgumentException: Service Intent must be explicit: Intent { act=com.xtc.kuwo.watch.MUSIC_PLAY_SERVICE (has extras) } 1.错误描述 今天在Android4.4 的小米4手机上运行我的程序的时候没有报错,而在Android 5.1的华为P7上运行我的程序的时候报了以下的错…
我的Android进阶之旅-->怎样解决Android 5.0中出现的警告: java.lang.IllegalArgumentException: Service Intent must be explicit: Intent { act=com.xtc.kuwo.watch.MUSIC_PLAY_SERVICE (has extras) } 1.错误描写叙述 今天在Android4.4 的小米4手机上执行我的程序的时候没有报错.而在Android 5.1的华为P7上执行我的程序的时候报了以下…
错误原因: Android 8.0 不再允许后台service直接通过startService方式去启动, 具体行为变更如下: 如果针对 Android 8.0 的应用尝试在不允许其创建后台服务的情况下使用 startService() 函数,则该函数将引发一个 IllegalStateException. 新的 Context.startForegroundService() 函数将启动一个前台服务.现在,即使应用在后台运行, 系统也允许其调用 Context.startForegroundS…
 上一篇博客<Android 6.0 如何添加完整的系统服务(app-framework-kernel)>http://www.cnblogs.com/hackfun/p/7418902.html介绍了如何添加一个系统服务,客户端和服务端都是基于JAVA实现的OpersysService.经过进一步的学习,我将演示如何使用C++实现一个相同功能的系统服务hfnativeservice.为了兼容OpersysService,将保留Opersys-Service服务端中的HAL和driver,供h…
有些时候我们使用Service的时需要采用隐私启动的方式,但是Android 5.0一出来后,其中有个特性就是Service Intent  must be explitict,也就是说从Lollipop开始,service服务必须采用显示方式启动. 而android源码是这样写的(源码位置:sdk/sources/android-21/android/app/ContextImpl.java): private void validateServiceIntent(Intent service…
导读 增强的Doze模式 后台优化 Data Saver 一.增强的Doze模式 Android N对Android M引进的Doze模式进行了进一步的增强,变化体现在两个方面.一方面是降低了进入Doze模式的条件,Android M中的条件是不插电,屏幕熄灭且静置一段时间,在Android N中去掉了静置的条件,这个改变大大增加了设备进入Doze模式的机会,因而使得Doze对应用程序的影响大大增加.另一方面,Doze模式被分成了两个阶段,当设备切断电源,熄灭屏幕一段时间,会进入到第一阶段,切断…
Android 6.0新特性 Runtime Permissions Doze and App Standby Apache HTTP Client Removal BoringSSL Access to Hardware Identifiers Notifications AudioManager Changes Text Selection Browser Bookmark Changes Android Keystore Changes Wi-Fi and Networking Chang…
最近打算把个人站点的博客文章同步到"博客园"! Thinking in Android -- "系统启动" [启动阶段] [相关文章] 状态 源码版本 init 深入研究 Android 启动阶段 之 init 搬家中 Android 9.0 zygote 深入研究 Android 启动阶段 之 zygote 搬家中 Android 9.0 systemserver 深入研究 Android 启动阶段 之 systemserver 搬家中 Android 9.0 L…
在Android 5.0中使用JobScheduler 原文链接 : using-the-jobscheduler-api-on-android-lollipop 译者 : Mr.Simple 校对者 : Mr.Simple 在这篇文章中,你会学习到在Android 5.0中怎样使用JobScheduler API. JobScheduler API同意开发人员在符合某些条件时创建运行在后台的任务. 介绍 在Android开发中,会存在这么些场景 : 你须要在稍后的某个时间点或者当满足某个特定的…
在这篇文章中,你会学习到在Android 5.0中怎样使用JobScheduler API. JobScheduler API同意开发人员在符合某些条件时创建运行在后台的任务. 介绍 在Android开发中,会存在这么些场景 : 你须要在稍后的某个时间点或者当满足某个特定的条件时运行一个任务,比如当设备接通电源适配器或者连接到WIFI.幸运的是在API 21 ( Android 5.0.即Lollipop )中,google提供了一个新叫做JobScheduler API的组件来处理这种场景.…
http://www.xuebuyuan.com/558284.html 方法一 public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 隐藏标题栏 requestWindowFeature(Window.FEATURE_NO_TITLE); // 隐藏状态栏…
Android 6.0 APIs In this documentSHOW MORE Fingerprint Authentication Confirm Credential App Linking Auto Backup for Apps Direct Share Voice Interactions Assist API Adoptable Storage Notifications Bluetooth Stylus Support Improved Bluetooth Low Energ…
Android 6.0 Changes In this document Runtime Permissions Doze and App Standby Apache HTTP Client Removal BoringSSL Access to Hardware Identifiers Notifications AudioManager Changes Text Selection Browser Bookmark Changes Android Keystore Changes Wi-F…
前言 谷歌在2015年8月份时候,发布了Android 6.0版本,代号叫做“棉花糖”(Marshmallow ),其中的很大的一部分变化,是在用户权限授权上,或许是感觉之前默认授权的不合理,现在6.0出来,使得用户权限授权变得合理.这可能也是参考IOS系统的,只有在用户需要使用权限的时候,才去授权请求,这样做的目的是提高用户体验,当然,用户感觉好了,受苦的是我们开发人员,原来的规则不适用了,现在我们去适应新的规则,毕竟是靠谷歌这颗大树吃饭的嘛. 原来权限模型 在Android 6.0版本之前,…
1.获取音乐 1-1:获取手机中的音乐(用ContentProvider内容提供者来完成): package com.firefly.util; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import android.content.Context; import android.database.Cursor; import an…
Service四大组件之一,需要在AndroidMainfest.xml中添加相关配置,运行于后台,不与用户进行交换,没有UI... 配置时可通过<intent-filter.../>元素指定它可被那些Intent启动. Android系统本身提供了大量的Service组件,可通过这些系统Service来操作Android系统本身. BroadcastReceiver组件就是一个全局的事件监听器,只不过其用于监听系统发出的BroadCast,通过使用BroadcastReceiver,即可在不…
Android四大组件之Service Android支持服务的概念,服务是在后台运行的组件,没有用户界面,Android服务可用有与活动独立的生命周期.Android支持两种类型的服务: 本地服务: 本地服务只能由承载该服务的应用程序访问,无法供在设备上运行的其他应用程序访问.客户端调用Context.startService()启动该服务. 远程服务: 远程服务除了可从承载服务的应用程序访问,还可以从其他应用程序访问.远程服务使用AIDL向客户端定义.服务支持onBind()方法,客户端通过…
上一讲 讲了如何创建一个user android 5.0 创建多用户 双开多开应用(1) 为什么要创建User  例如window 系统创建了一个user 会在当前用户下进行操作,而android 多用户体系就像window系统 创建了一个user之后在当前user下进行操作,就可以再安装或者启动一个应用. 有了一个user 之后在这个user下创建一个工作空间,在工作空间下安装 启动apk 就可以双开了. 具体类操作: package android.app.admin; import and…
原文链接:http://developer.android.com/about/versions/marshmallow/android-6.0-changes.html 伴随着新特性和功能,Android 6.0 (API level 23) 还包含了一些系统以及API行为上的变化.本文着重指出了一些你(开发者)需要了解,并在开发应用时予以考虑的关键变化. 如果你之前发布过Android应用,那么请注意,平台的这些变化会影响到你的应用. 运行时权限(Runtime Permissions) 本…
由于 Android 的版本分裂比较严重,整个新系统升级可能需要一两年甚至更长时间.所以目前使用 Android 5.0 的大部分是喜欢尝鲜的用户,同时现在市场上能够很好支持 Android 5.0 的应用又很少,如果开发者能捕捉这个机会,从这些用户那里得到更好的反馈,或者更好的证明机会,都是非常有价值的. 在 Android 5.0 发布之后,我认为有几个地方可以让开发者做得更好,比如可以建立一个更好看的应用,或者能够解决在应用中最大的性能问题——电量消耗的问题,等等.同时 Android 5…
五种交互方式,分别是:通过广播交互.通过共享文件交互.通过Messenger(信使)交互.通过自定义接口交互.通过AIDL交互.(可能更多) Service与Thread的区别 Thread:Thread 是程序执行的最小单元,可以用 Thread 来执行一些异步的操作. Service:Service 是android的一种机制,当它运行的时候如果是Local Service,那么对应的 Service 是运行在主进程的 main 线程上的.如果是Remote Service,那么对应的 Se…
屏蔽home键的方法 // 屏蔽掉Home键 public void onAttachedToWindow() { this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG); super.onAttachedToWindow(); } 下面是实例demo android4.0以上版本运行之后就会报错 java.lang.IllegalArgumentException: Window type can no…
原文:Android菜鸟的成长笔记(17)-- 再看Android中的Unbounded Service 前面已经写过关于startService(Unbounded Service)的一篇文章:<Android菜鸟的成长笔记(16)--Service简介>本篇将在这一篇的基础上再来看一下startService的用法.先看一段代码: TestService.java package com.example.myfirstapp; import android.app.Service; imp…