handler

Can’t create handler inside thread that has not called Looper.prepare()

左心房为你撑大大i 提交于 2019-12-27 17:55:04
1)在Android 2.3以前,为防止ANR(Application Not Responding),Google是不赞成将网络连接等一系列耗时操作直接放到应用主线程进行的,推荐将这类操作放在子线程内;而Android 4.0版本开始,Google强制要求这类操作必须在子线程内进行,否则将抛出 NetworkOnMainThreadException 异常。 (2)操作UI必须只能在主线程内进行,否则报“Can’t create handler inside thread that has not called Looper.prepare()”错误。 在这里需要注意的是,Toast 也属于UI操作。 具体操作可以参考: http://jerry.hk/notes/android-thread-and-handler 来源: https://www.cnblogs.com/jiduoduo/p/4347599.html

Python自学笔记-logging模块详解

喜夏-厌秋 提交于 2019-12-27 17:37:16
简单将日志打印到屏幕: import logging logging.debug('debug message') logging.info('info message') logging.warning('warning message') logging.error('error message') logging.critical('critical message') View Code 输出结果为: WARNING:root:warning message ERROR:root:error message CRITICAL:root:critical message View Code 可见,默认情况下 Python 的logging模块将日志打印到了标准输出中,且只显示了大于等于WARNING级别的日志,这说明默认的日志级别设置为WARNING(日志级别等级CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET),默认的日志格式为日志级别:Logger名称:用户输出消息。 灵活配置日志级别,日志格式,输出位置 logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(message)s', datefmt='%a,%d %b %Y %H:%M:%S',

安卓handler机制

一个人想着一个人 提交于 2019-12-27 15:24:34
sendMessage方式:根据以上表格中三个关键类,下面分别从源码角度解释其作用 步骤: 1.Handler(创建handler对象时,主要做了两件事,1.指定looper对象;2.指定messageQueue对象) //流程:创建handler对象——>Handler构造方法——>指定当前线程的looper对象 =绑定当前线程——>指定looper对象中保存的消息队列对象MessageQueue /** * a.使用 */ private Handler mhandler = new Handler(){ // 通过复写handlerMessage()从而确定更新UI的操作 @Override public void handleMessage(Message msg) { ...// 需执行的UI操作 } }; /** *b.源码 */ public Handler(Callback callback, boolean async) { // 1. 指定Looper对象 mLooper = Looper.myLooper(); if (mLooper == null) { throw new RuntimeException( "Can't create handler inside thread that has not called Looper.prepare()");

Android - Hold Button to Repeat Action

笑着哭i 提交于 2019-12-27 11:53:29
问题 Morning all, I'll admit straight off that I'm new to development and trying my hand at Android. I've been trying to search the 'net to find advice on how to implement some "Hold Button to Repeat Action" - I've created a custom numpad from buttons and want a backspace-like behaviour. Having got so far, I called upon a friend who hasnt coded Android before, but done lots of C# / Java and seems to know what he's doing. The code below works just fine, but I feel it could be done more neatly. I

CAS (1) —— Mac下配置CAS到Tomcat(服务端)

假如想象 提交于 2019-12-27 08:19:47
CAS (1) —— Mac下配置CAS到Tomcat(服务端) tomcat版本: tomcat-8.0.29 jdk版本: jdk1.8.0_65 cas版本: cas4.1.2 cas-client-3.4.1 参考来源: CAS实现单点登录(SSO)经典完整教程 CAS 4.0 配置开发手册 cas客户端应用实现 使用 CAS 在 Tomcat 中实现单点登录 Tomcat (1) —— Mac下配置Tomcat Https/SSL 【高可用HA】Apache (2) —— Mac下安装多个Apache Tomcat实例 目标架构 下载 首先登陆jasig网站 http://downloads.jasig.org/ ,下载相应的cas版本。 由于网站只提供源码包而不提供发布包,所以需要自己下载来编译。 cas会为不同的客户端消费者提供client包,这里我们选择java-client作为演示。 先编译服务端 cas-server-webapp Richard$ mvn clean install -Dmaven.test.skip 然后在target下找到相应的war包"cas-server-webapp-4.1.2.war" 配置 服务端 简单设置 参照以下文章为Tomcat配置好Https Tomcat (1) —— Mac下配置Tomcat Https/SSL

解读ASP.NET 5 & MVC6系列(11):Routing路由

与世无争的帅哥 提交于 2019-12-27 05:58:20
新版Routing功能介绍 在ASP.NET 5和MVC6中,Routing功能被全部重写了,虽然用法有些类似,但和之前的Routing原理完全不太一样了,该Routing框架不仅可以支持MVC和Web API,还支持一般的ASP.NET5程序。新版的改变有如下几个部分。 首先,Routing系统是基于ASP.NET 5的,是一个独立于MVC的路由框架,而不是基于MVC的。MVC只是在上面扩展了一个快捷方式而已。 其次,在ASP.NET 5中,MVC和Web API控制器没有区别了,即合二为一了。两者派生于同一个Controller基类。也就是说该Routing框架是适用于两者的,适用于MVC则意味着也适用于Web API。 最后,不管在基于约定的Route声明还是基于Attribute的Route声明,都可以使用内联约束和参数选项。例如,你可以约定路由中某个参数的数据类型,也可以让一个参数标记为可选类型,再或者给其提供一个默认值。 Routing框架的主要流程 基本的Routing框架是基于Middleware来实现的,这样就可以将其添加到HTTP的请求Pipeline中了,它可以喝其它任意Middleware一起进行组合使用,如静态文件处理程序、错误页、或者SignalR服务器。 在使用Routing框架之前,首要要了解Routing的作用,作用很简单: 对于HTTP请求

ES6学习笔记四:Proxy与Reflect

淺唱寂寞╮ 提交于 2019-12-26 23:59:11
一:Proxy 代理。 ES6把代理模式做成了一个类,直接传入被代理对象、代理函数,即可创建一个代理对象,然后我们使用代理对象进行方法调用,即可调用被包装过的方法: 1)创建 var proxy = new Proxy(target, handler); new Proxy() 表示生成一个 Proxy 实例, target 参数表示所要拦截的目标对象, handler 参数也是一个对象,用来定制拦截行为,其中定义了一系列的代理方法。 如果 handler 没有设置任何拦截,那就等同于直接通向原对象。 2)handler中定义的拦截操作主要有: 1)get(target, propKey, receiver) 拦截对象属性的读取,比如 proxy.foo 和 proxy['foo'] 。 最后一个参数 receiver 是一个对象,可选,参见下面 Reflect.get 的部分。 (2)set(target, propKey, value, receiver) 拦截对象属性的设置,比如 proxy.foo = v 或 proxy['foo'] = v ,返回一个布尔值。 (3)has(target, propKey) 拦截 propKey in proxy 的操作,返回一个布尔值。 (4)deleteProperty(target, propKey) 拦截 delete proxy

js-ES6学习笔记-Proxy

孤街醉人 提交于 2019-12-26 17:07:31
1、Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程。 2、Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写。Proxy 这个词的原意是代理,用在这里表示由它来“代理”某些操作,可以译为“代理器”。 3、ES6 原生提供 Proxy 构造函数,用来生成 Proxy 实例。 var proxy = new Proxy(target, handler); Proxy 对象的所有用法,都是上面这种形式,不同的只是 handler 参数的写法。其中, new Proxy() 表示生成一个 Proxy 实例, target 参数表示所要拦截的目标对象, handler 参数也是一个对象,用来定制拦截行为。 4、一个技巧是将 Proxy 对象,设置到 object.proxy 属性,从而可以在 object 对象上调用。 var object = { proxy: new Proxy(target, handler) }; 5、get方法用于拦截某个属性的读取操作。下面是一个拦截读取操作的例子。 var person = { name: "张三" }; var proxy = new Proxy

httpmodule httphandler

╄→гoц情女王★ 提交于 2019-12-26 13:51:43
转自 http://www.cnblogs.com/linecheng/archive/2011/12/14/2287822.html 本文只是对HttpModule和HttpHandler做最初步的了解。非菜鸟级别人士可直接无视。 ASP.NET 中Http的请求流程 用户发出的客户端请求达到服务器后,会被服务端的inetinfo.exe 进程捕获,该进程将该http请求转交给asp.net_isapi.dll进程,然后通过http pipeline 管道(具体这是什么东西我也不清楚)传送给aspnet_wp.exe进程来处理。接下来就到了.net framework的httpruntime处理中心,处理完毕后,就发送给用户的浏览器。 当http请求传送给httpruntime 的时候,首先会进入一个叫做HttpApplication Factory的容器之中,从这个名字上很容易看出是一个工厂,该工厂产生一个HttpApplication的实例,该实例保存有该请求的所有信息。然 后,http请求进入HttpModule容器之中,然后进入HttpHandlerFactory中,调用相应的HttpHandler,执行其 ProcessRequest方法,完成整个请求的处理。其中httpHandler是真正的请求处理中心。Httpmodule只是在该处理中心做处理

学习SpringMVC——拦截器

一个人想着一个人 提交于 2019-12-26 11:54:25
  拦截器,顾名思义就是用来拦截的。   那什么是拦截,又为什么要拦截。对于Spring MVC来说,拦截器主要的工作对象就是用户的请求,拦截下来之后,我们可以在拦截的各个阶段悉心呵护【为所欲为】。常见的比如可以做权限验证,登录系统后,系统获取到你的请求然后分析下你的用户权限,是Administrator还是User还是Guest。 主要相关类和方法    HandlerExecutionChain   该类主要由handler和handler interceptors组成   HandlerMapping类通过getHandler方法会调用到该类   HandlerInterceptor   Spring MVC中对于一个请求可以添加多个拦截器,而这个拦截器集合中会链式调用这些拦截器。每个拦截器会执行固定顺序的方法,而这些方法就定义在HandlerInterceptor类中。   这是拦截器的一个基础接口,里面有三个方法 boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception;    使用时机 :在处理请求之前    应用场景 :可以在该方法中放入一些初始化的操作,比如权限验证,日志管理等    注意