- Android LocalBroadcastManager及常用的系统广播
上官猪猪
Androidandroidandroidstudio
LocalBroadcastManager解决BroadcastReceiver的安全问题LocalBroadcastManager是AndroidSupport包提供了一个工具,用于在同一个应用内的不同组件间发送Broadcast。LocalBroadcastManager也称为局部通知管理器,这种通知的好处是安全性高,效率也高,适合局部通信,可以用来代替Handler更新UI好处:1、因广播数
- Android-性能优化-ANR-的原因和解决方案
2401_84538474
程序员android性能优化vscode
BroadcastReceiver的事件(onRecieve()方法)在规定时间内没处理完(前台广播为10s,后台广播为60s);Service前台20s后台200s未完成启动;ContentProvider的publish()在10s内没进行完。通常情况下就是主线程被阻塞造成的。2、ANR的实现原理以输入无响应的过程为例(基于9.0代码):最终弹出ANR对话框的位置是与AMS同目录的类AppEr
- Android高级面试题汇总——Android篇(1)
oO樱花祭LI
Android面试
(一)Android基础知识点1、四大组件是什么Activity,Service,ContentProvider,BroadcastReceiver2、四大组件的生命周期和简单用法Activity的生命周期:onCreate()->onStart()->onResume()->onPause()->onStop()->onRestart()->onDestroy()用法:创建一个Intent对象,
- 应用内广播 - LocalBroadcastManager
Candy有雪吃
在Android系统中,BroadcastReceiver的设计初衷就是从全局考虑的,可以方便应用程序和系统、应用程序之间、应用程序内的通信,所以对单个应用程序而言BroadcastReceiver是存在安全性问题的,相应问题及解决如下:1、当应用程序发送某个广播时系统会将发送的Intent与系统中所有注册的BroadcastReceiver的IntentFilter进行匹配,若匹配成功则执行相应
- Broadcast 动态注册监听网络变化
昨天剩下的一杯冷茶
这个实验只需要建一个工程,布局文件不需要进行任何修改。Activitypackagecom.example.hzx.mybroadcast;importandroid.content.BroadcastReceiver;importandroid.content.Context;importandroid.content.Intent;importandroid.content.IntentFil
- Qt应用开发(安卓篇)——安卓广播机制
波塞冬~
Qt5从入门到精通-应用开发qtandroidc++
一、前言在Android的开发中,我们的程序需要得到网络状态变化、电池状态、屏幕状态、电池、系统启动完成、U盘等外设接入状态、apk安装等这些信息,除了主动去找到这些节点的信息,还可以通过安卓的广播机制被动去得到。Android广播机制包含三个基本要素:广播(Broadcast)-用于发送广播,广播接收器(BroadcastReceiver)-用于接收广播,关心内容(Intent)-用于保存广播相
- Android 13 针对 Intent filters 安全的再加强
TechMerger
AndroidAppAndroid13android安全intentfilters
作者:李龙、TechMerger君在看这个变更之前,我们需要回忆下Android12的一个安全性变更,即声明了的Activity、BroadcastReceiver、Service必须声明android:exported,否则将会无法被启动。Android12的这个变更是为了防止开发者在不知情的情况下,声明了一个intent-filter就会使得这些组件对外公开,一定程度下强化了安全性。但是却漏掉
- 【Android开发基础系列】广播机制专题
Kevin_Junbaozi
1使用方法在Activity中,注册广播的一个Demo。总共分3步第一步:定义一个BroadcastReceiver广播接收类:privateBroadcastReceivermBroadcastReceiver=newBroadcastReceiver(){@OverridepublicvoidonReceive(Contextcontext,Intentintent){Stringaction
- AlarmManager 实现定时任务
Zane_Samuel
因为自己项目需要一个计时任务,考虑到种种原因,项目大概需要的是这样的只要进程不被杀死,每间隔30分钟向后台发送一次服务,将地图的地位点发送到后台,考虑到如果用handler和Thread的或者是Timer的话考虑一个当时屏幕熄灭或者锁屏的情况下可能会出现问题。所以最后的选择方案是AlarmManager(闹钟服务)、BroadCastReceiver、Service实现了一个计时器````主要实现
- Android 性能优化-ANR 的原因和解决方案
chuhe1989
Android开发android
1、出现ANR的情况满足下面的一种情况系统就会弹出ANR提示输入事件(按键和触摸事件)5s内没被处理;BroadcastReceiver的事件(onRecieve()方法)在规定时间内没处理完(前台广播为10s,后台广播为60s);Service前台20s后台200s未完成启动;ContentProvider的publish()在10s内没进行完。通常情况下就是主线程被阻塞造成的。2、ANR的实现
- Android性能调优 - 应用安全问题
emmmmsuperdan
Android应用安全android安全
Android应用安全1.组件暴露:像比如ContentProvider,BroadcastReceiver,Activity等组件有android:exported属性;如果是私有组件android:exported=“false”;如果是公有组件android:exported=“true”且进行权限控制;2.Log敏感信息泄漏:3.权限申请敏感权限调用在Manifest文件中调用一些敏感的用
- 2019-04-16
逸荏
怎么在BroadcastReceiver(广播)里做耗时操作?最近刚好遇到一个耗时操作的问题,因为用到逻辑里面用到了context,不能在Service直接使用,只好在又开启了一个BroadcastReceiver,顺便分享记录一下,希望能够帮到刚好遇到这样问题的人。BroadcastReceiver(广播)有两种注册方式,动态注册和静态注册,这里就不详细介绍了,一般我们在BroadcastRec
- Broadcast Receiver 面试详解
千涯秋瑟
一、广播1、广播的定义BroadcastReceiver,中文直译为“广播接收者”,在Android系统中,广播主要用在组件与组件之间进行消息传递。组件与组件之间可以是同一个进程,也可以是不同进程。既然是可以跨进程的,那么可以想像底层应该是基于Binder来实现的,事实也正是如此。2、广播的使用场景3、广播的种类4)有序广播OrderedBroadcast拦截可以使用abortBroadCast来
- Android:Intent&Activity,Service,BroadcastReceiver
偶是不器
AndroidandroidActivityIntentService广播
3.14Android三大组件1、Intent页面跳转Intent(意图):将要做某一件事。Android的3大组件:Activity、Service、BroadcastReceiver,通过Intent启动,并且Intent可以携带数据。Intent类方法setComponent()设置组件;setClass(packageContext,cls)设置类、setAction()设置action参
- ANR 出现的场景以及解决方案
我看Android
applicationnotresponse简称ANR,应用程序无响应。当应用在5秒内对用户输入或点击等事件无响应时,Android便会认为应用无响应,弹出ANR提示窗1.产生场景activity内对事件5秒无法完成处理BroadcastReceiver内对事件10秒无法完成处理Service的各个生命周期函数在特定时间(20秒)内无法完成处理2.原理Android应用在启动时会创建一个UI线程,
- 安卓开发面试题
qq_42431718
android
什么是Android的四大组件?请简要介绍每个组件的作用。答案:活动(Activity):用于实现应用程序的用户界面,处理用户交互以及展示数据。服务(Service):在后台执行长时间运行的操作,不与用户进行直接交互。广播接收器(BroadcastReceiver):监听系统广播事件或应用内自定义广播事件,并做出相应的操作。内容提供者(ContentProvider):用于应用程序之间共享数据,提
- Android 面试4——BroadcastReceiver
锦岳
本文内容的搜集、整理,主要参考了Android四大组件:BroadcastReceiver史上最全面解析,在此致谢!1.定义与原理定义:全局监听器,用于监听/接收应用发出的广播消息并做出反应。原理:采用了观察者模型:基于消息的发布/订阅事件模型。2.BroadcastReceiver的注册自定义Receiver类,并实现BroadcastReceiver基类publicclassMyReceive
- Android四大基本组件内容详解
蜗牛是不是牛
Android四大基本组件分别是Activity,Service服务,ContentProvider内容提供者,BroadcastReceiver广播接收器。一:了解四大基本组件Activity:应用程序中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。Activity之间通过Intent进行通信。在Intent的描述结构中,有两个最重要的部
- 电池电量检测
来之梦
安卓静默安装androidandroidstudioide
//AndroidManifest添配置//电量改变的广播接收者packagecom.soft.nortek.batterystate;importandroid.content.BroadcastReceiver;importandroid.content.Context;importandroid.content.Intent;importandroid.os.BatteryManager;i
- 1 认识 Android
给你一杯BUG
Androidandroidandroidstudioide
欢迎你来到Android世界!Android系统是目前世界上市场占有率最高的移动操作系统。1Android系统架构Android的系统架构大致可以分为四层:Linux内核层、系统运行库层、应用框架层和应用层。 2Android应用开发特色2.1Android的四大组件Android系统的四大组件分别是活动(Activity)、服务(Service)、广播接收器(BroadcastReceiver)
- android四大组件
流水潺湲
android四大组件分别为activity、service、contentprovider、broadcastreceiver。一、android四大组件详解1、activity(1)一个Activity通常就是一个单独的屏幕(窗口)。(2)Activity之间通过Intent进行通信。(3)android应用中每一个Activity都必须要在AndroidManifest.xml配置文件中声明
- 【Android开发艺术探索】四大组件的工作过程
milovetingting
个人博客http://www.milovetingting.cn四大组件的工作过程four_components.png四大组件:Activity、Service、BroadcastReceiver、ContentProvider四大组件的运行状态Android的四大组件中除了BroadcastReceiver,其它三种组件必须在AndroidManifest中注册。对于BroadcastRece
- Android面试Android基础(十一)
肖义熙
问:Android中的IPC(进程间通信)机制?答:进程间通信即:跨进程的通信。有以下几种:1、使用Bundle。四大组件中Activity、Service、BroadcastReceiver都支持在Intent中传递Bundle数据。由于Bundle实现了Parcelable接口,所以它可以很方便的在不同的进程间传输数据。当然我们传输的数据必须能够被序列化,比如基本类型、实现了Parcelabl
- 四大组件 - BroadcastReceiver
zengkaiqiang562
Android应用开发广播接受者的注册方式有序广播无序广播粘性广播全局广播本地广播广播的权限设置
参考:17个必须掌握的BroadcastReceiver知识点「建议收藏」参考:《Android开发艺术探索》第9.4节(BroadcastReceiver的工作过程)参考:广播概览参考:1.BroadcastReceiver(广播接收者)概述BroadcastReceiver组件为系统与App之间,或App与App之间,或App内部的组件与组件之间,提供了一种数据交互的方式。App内部的组件可以
- 第一章(build.gradle详解)
Yolyn
第一章,你的第一行Android代码Android的开发特色四大组件活动(Activity)服务(Service)广播接收器(BroadcastReceiver)内容提供器(ContentProvider)详解build.gradle文件最外层的build.gradlebuildscript{repositories{jcenter()}dependencies{classpath'com.and
- Android BroadcastReceiver
潜心之力
一、简介广播接收者是Android四大组件之一,每个应用程序都可以对自己感兴趣的广播进行注册,这样该程序就能接收到自己所关心的广播内容,广播的注册有两种,分别是静态注册(配置文件注册)和动态注册(代码手动注册),广播的分类有两种,分别是标准广播(异步执行)和有序广播(同步执行)。二、创建广播新建一个类,继承BroadcastReceiverimportandroid.content.Broadca
- Android 来电秀总结
_明川
学习笔记Android进阶之路android自定义来电
前言效果图TODO参考文章实现思想申请权限静态权限动态权限监听电话BroadcastReceiver+悬浮窗显示实现InCallService+Activity实现最后该文章为对工作中部分业务实现的总结,阅读时间:20分钟,版本:Android6.0-9.0updatetime2021年02月03日11:48:55文章可能存在不足之处,还望评论批评,一起学习进步。前言要想实现自定义来电秀,首先我们
- 2024 android面试题总结部分
后岔湾程序员
开发日常问题android
进程间通信方式主要有intent,只支持Bundle支持的数据类型;Messenger支持一对多串行通信,用于发送消息及Bundle数据;AIDL功能强大,可调用服务端方法;ContentProvider主要支持进程间共享数据;BroadCastReceiver广播也可实现进程间通信,发送消息及数据线程间通信方式我们知道线程是CPU调度的最小单位。在Android中主线程是不能够做耗时操作的,子线
- Android中Intent
d85a3f21310a
Intent组件虽然不是四大组件,但却是连接四大组件的桥梁一、什么是Intent1、Intent的概念:Android中提供了Intent机制来协助应用间的交互与通讯,或者采用更准确的说法是,Intent不仅可用于应用程序之间,也可用于应用程序内部的activity,service和broadcastreceiver之间的交互。Intent这个英语单词的本意是“目的、意向、意图”。Intent是一
- Android四大组件之BroadcastReceiver
潇洒哥gyq
一.概述通过学习本篇文章,你将学会:1.什么是广播,用来干什么2.什么时候用广播3.广播实现的原理4.如何使用广播5.广播的分类二.广播定义和作用广播,属于Android四大组件之一,包含了广播的发送者和接收者。发送者通过广播发出消息,广播接收者收到消息并做出响应。三.应用场景1.同一APP内部的同一组件内的消息通道(单个或多个线程之间)2.同一APP内部的不同组件之间的消息通道(单个进城)3.同
- 如何用ruby来写hadoop的mapreduce并生成jar包
wudixiaotie
mapreduce
ruby来写hadoop的mapreduce,我用的方法是rubydoop。怎么配置环境呢:
1.安装rvm:
不说了 网上有
2.安装ruby:
由于我以前是做ruby的,所以习惯性的先安装了ruby,起码调试起来比jruby快多了。
3.安装jruby:
rvm install jruby然后等待安
- java编程思想 -- 访问控制权限
百合不是茶
java访问控制权限单例模式
访问权限是java中一个比较中要的知识点,它规定者什么方法可以访问,什么不可以访问
一:包访问权限;
自定义包:
package com.wj.control;
//包
public class Demo {
//定义一个无参的方法
public void DemoPackage(){
System.out.println("调用
- [生物与医学]请审慎食用小龙虾
comsci
生物
现在的餐馆里面出售的小龙虾,有一些是在野外捕捉的,这些小龙虾身体里面可能带有某些病毒和细菌,人食用以后可能会导致一些疾病,严重的甚至会死亡.....
所以,参加聚餐的时候,最好不要点小龙虾...就吃养殖的猪肉,牛肉,羊肉和鱼,等动物蛋白质
- org.apache.jasper.JasperException: Unable to compile class for JSP:
商人shang
maven2.2jdk1.8
环境: jdk1.8 maven tomcat7-maven-plugin 2.0
原因: tomcat7-maven-plugin 2.0 不知吃 jdk 1.8,换成 tomcat7-maven-plugin 2.2就行,即
<plugin>
- 你的垃圾你处理掉了吗?GC
oloz
GC
前序:本人菜鸟,此文研究学习来自网络,各位牛牛多指教
1.垃圾收集算法的核心思想
Java语言建立了垃圾收集机制,用以跟踪正在使用的对象和发现并回收不再使用(引用)的对象。该机制可以有效防范动态内存分配中可能发生的两个危险:因内存垃圾过多而引发的内存耗尽,以及不恰当的内存释放所造成的内存非法引用。
垃圾收集算法的核心思想是:对虚拟机可用内存空间,即堆空间中的对象进行识别
- shiro 和 SESSSION
杨白白
shiro
shiro 在web项目里默认使用的是web容器提供的session,也就是说shiro使用的session是web容器产生的,并不是自己产生的,在用于非web环境时可用其他来源代替。在web工程启动的时候它就和容器绑定在了一起,这是通过web.xml里面的shiroFilter实现的。通过session.getSession()方法会在浏览器cokkice产生JESSIONID,当关闭浏览器,此
- 移动互联网终端 淘宝客如何实现盈利
小桔子
移動客戶端淘客淘寶App
2012年淘宝联盟平台为站长和淘宝客带来的分成收入突破30亿元,同比增长100%。而来自移动端的分成达1亿元,其中美丽说、蘑菇街、果库、口袋购物等App运营商分成近5000万元。 可以看出,虽然目前阶段PC端对于淘客而言仍旧是盈利的大头,但移动端已经呈现出爆发之势。而且这个势头将随着智能终端(手机,平板)的加速普及而更加迅猛
- wordpress小工具制作
aichenglong
wordpress小工具
wordpress 使用侧边栏的小工具,很方便调整页面结构
小工具的制作过程
1 在自己的主题文件中新建一个文件夹(如widget),在文件夹中创建一个php(AWP_posts-category.php)
小工具是一个类,想侧边栏一样,还得使用代码注册,他才可以再后台使用,基本的代码一层不变
<?php
class AWP_Post_Category extends WP_Wi
- JS微信分享
AILIKES
js
// 所有功能必须包含在 WeixinApi.ready 中进行
WeixinApi.ready(function(Api) {
// 微信分享的数据
var wxData = {
&nb
- 封装探讨
百合不是茶
JAVA面向对象 封装
//封装 属性 方法 将某些东西包装在一起,通过创建对象或使用静态的方法来调用,称为封装;封装其实就是有选择性地公开或隐藏某些信息,它解决了数据的安全性问题,增加代码的可读性和可维护性
在 Aname类中申明三个属性,将其封装在一个类中:通过对象来调用
例如 1:
//属性 将其设为私有
姓名 name 可以公开
- jquery radio/checkbox change事件不能触发的问题
bijian1013
JavaScriptjquery
我想让radio来控制当前我选择的是机动车还是特种车,如下所示:
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"><
- AngularJS中安全性措施
bijian1013
JavaScriptAngularJS安全性XSRFJSON漏洞
在使用web应用中,安全性是应该首要考虑的一个问题。AngularJS提供了一些辅助机制,用来防护来自两个常见攻击方向的网络攻击。
一.JSON漏洞
当使用一个GET请求获取JSON数组信息的时候(尤其是当这一信息非常敏感,
- [Maven学习笔记九]Maven发布web项目
bit1129
maven
基于Maven的web项目的标准项目结构
user-project
user-core
user-service
user-web
src
- 【Hive七】Hive用户自定义聚合函数(UDAF)
bit1129
hive
用户自定义聚合函数,用户提供的多个入参通过聚合计算(求和、求最大值、求最小值)得到一个聚合计算结果的函数。
问题:UDF也可以提供输入多个参数然后输出一个结果的运算,比如加法运算add(3,5),add这个UDF需要实现UDF的evaluate方法,那么UDF和UDAF的实质分别究竟是什么?
Double evaluate(Double a, Double b)
- 通过 nginx-lua 给 Nginx 增加 OAuth 支持
ronin47
前言:我们使用Nginx的Lua中间件建立了OAuth2认证和授权层。如果你也有此打算,阅读下面的文档,实现自动化并获得收益。SeatGeek 在过去几年中取得了发展,我们已经积累了不少针对各种任务的不同管理接口。我们通常为新的展示需求创建新模块,比如我们自己的博客、图表等。我们还定期开发内部工具来处理诸如部署、可视化操作及事件处理等事务。在处理这些事务中,我们使用了几个不同的接口来认证:
&n
- 利用tomcat-redis-session-manager做session同步时自定义类对象属性保存不上的解决方法
bsr1983
session
在利用tomcat-redis-session-manager做session同步时,遇到了在session保存一个自定义对象时,修改该对象中的某个属性,session未进行序列化,属性没有被存储到redis中。 在 tomcat-redis-session-manager的github上有如下说明: Session Change Tracking
As noted in the &qu
- 《代码大全》表驱动法-Table Driven Approach-1
bylijinnan
java算法
关于Table Driven Approach的一篇非常好的文章:
http://www.codeproject.com/Articles/42732/Table-driven-Approach
package com.ljn.base;
import java.util.Random;
public class TableDriven {
public
- Sybase封锁原理
chicony
Sybase
昨天在操作Sybase IQ12.7时意外操作造成了数据库表锁定,不能删除被锁定表数据也不能往其中写入数据。由于着急往该表抽入数据,因此立马着手解决该表的解锁问题。 无奈此前没有接触过Sybase IQ12.7这套数据库产品,加之当时已属于下班时间无法求助于支持人员支持,因此只有借助搜索引擎强大的
- java异常处理机制
CrazyMizzz
java
java异常关键字有以下几个,分别为 try catch final throw throws
他们的定义分别为
try: Opening exception-handling statement.
catch: Captures the exception.
finally: Runs its code before terminating
- hive 数据插入DML语法汇总
daizj
hiveDML数据插入
Hive的数据插入DML语法汇总1、Loading files into tables语法:1) LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]解释:1)、上面命令执行环境为hive客户端环境下: hive>l
- 工厂设计模式
dcj3sjt126com
设计模式
使用设计模式是促进最佳实践和良好设计的好办法。设计模式可以提供针对常见的编程问题的灵活的解决方案。 工厂模式
工厂模式(Factory)允许你在代码执行时实例化对象。它之所以被称为工厂模式是因为它负责“生产”对象。工厂方法的参数是你要生成的对象对应的类名称。
Example #1 调用工厂方法(带参数)
<?phpclass Example{
- mysql字符串查找函数
dcj3sjt126com
mysql
FIND_IN_SET(str,strlist)
假如字符串str 在由N 子链组成的字符串列表strlist 中,则返回值的范围在1到 N 之间。一个字符串列表就是一个由一些被‘,’符号分开的自链组成的字符串。如果第一个参数是一个常数字符串,而第二个是type SET列,则 FIND_IN_SET() 函数被优化,使用比特计算。如果str不在strlist 或st
- jvm内存管理
easterfly
jvm
一、JVM堆内存的划分
分为年轻代和年老代。年轻代又分为三部分:一个eden,两个survivor。
工作过程是这样的:e区空间满了后,执行minor gc,存活下来的对象放入s0, 对s0仍会进行minor gc,存活下来的的对象放入s1中,对s1同样执行minor gc,依旧存活的对象就放入年老代中;
年老代满了之后会执行major gc,这个是stop the word模式,执行
- CentOS-6.3安装配置JDK-8
gengzg
centos
JAVA_HOME=/usr/java/jdk1.8.0_45
JRE_HOME=/usr/java/jdk1.8.0_45/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME
- 【转】关于web路径的获取方法
huangyc1210
Web路径
假定你的web application 名称为news,你在浏览器中输入请求路径: http://localhost:8080/news/main/list.jsp 则执行下面向行代码后打印出如下结果: 1、 System.out.println(request.getContextPath()); //可返回站点的根路径。也就是项
- php里获取第一个中文首字母并排序
远去的渡口
数据结构PHP
很久没来更新博客了,还是觉得工作需要多总结的好。今天来更新一个自己认为比较有成就的问题吧。 最近在做储值结算,需求里结算首页需要按门店的首字母A-Z排序。我的数据结构原本是这样的:
Array
(
[0] => Array
(
[sid] => 2885842
[recetcstoredpay] =&g
- java内部类
hm4123660
java内部类匿名内部类成员内部类方法内部类
在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号。内部类可以间接解决多继承问题,可以使用内部类继承一个类,外部类继承一个类,实现多继承。
&nb
- Caused by: java.lang.IncompatibleClassChangeError: class org.hibernate.cfg.Exten
zhb8015
maven pom.xml关于hibernate的配置和异常信息如下,查了好多资料,问题还是没有解决。只知道是包冲突,就是不知道是哪个包....遇到这个问题的分享下是怎么解决的。。
maven pom:
<dependency>
<groupId>org.hibernate</groupId>
<ar
- Spark 性能相关参数配置详解-任务调度篇
Stark_Summer
sparkcachecpu任务调度yarn
随着Spark的逐渐成熟完善, 越来越多的可配置参数被添加到Spark中来, 本文试图通过阐述这其中部分参数的工作原理和配置思路, 和大家一起探讨一下如何根据实际场合对Spark进行配置优化。
由于篇幅较长,所以在这里分篇组织,如果要看最新完整的网页版内容,可以戳这里:http://spark-config.readthedocs.org/,主要是便
- css3滤镜
wangkeheng
htmlcss
经常看到一些网站的底部有一些灰色的图标,鼠标移入的时候会变亮,开始以为是js操作src或者bg呢,搜索了一下,发现了一个更好的方法:通过css3的滤镜方法。
html代码:
<a href='' class='icon'><img src='utv.jpg' /></a>
css代码:
.icon{-webkit-filter: graysc