android接口回调

Android 学习笔记核心篇

隐身守侯 提交于 2019-12-14 05:03:33
原文:https://juejin.im/post/5c46db4ae51d4503834d8227 Android 学习笔记核心篇 基础知识 底层原理 Android 操作系统是一个多用户 Linux 操作系统,每个应用都是一个用户 操作系统一般会给每个应用分配一个唯一的 Linux 用户 ID,这个 ID 对应用是不可见的。但有些情况下两个应用可以共享同一个 Linux 用户 ID,此时他们可以访问彼此的文件,甚至还可以运行在同一个 Linux 进程中,共享同一个虚拟机。但两个应用的签名必须是一样的 每个进程都有自己的虚拟机,一般每个应用都运行在自己的 Linux 进程中 应用组件 应用没有唯一的入口,没有 main() 函数,因为应用是由多个组件拼凑在一起的,每个组件都是系统或者用户进入应用的入口,组件之间既可以是相互独立的,也可以是相互依赖的。系统和其它应用在被允许的情况下可以启动/激活一个应用的任意一个组件 组件有四种类型: Activity,Service,BroadcastReceiver 和 ContentProvider Activity Activity 表示一个新的用户界面,只能由系统进行创建和销毁,应用只能监听到一些生命周期回调,这些回调通常也被叫作生命周期方法 Activity 的名字一旦确定好就不要再更改了,否则可能会引发一系列问题 Service

海康大华安防监控网络摄像头网页无插件直播流媒体RTSP专用播放器方案之EasyPlayer-RTSP-Android如何获取拉流的回调?

…衆ロ難τιáo~ 提交于 2019-12-03 11:02:10
EasyPlayer是一个RTSP流媒体播放器,在GitHub上开源大部分源码,其主要功能有播放、抓图、录制视频、实时静音/取消静音。 EasyPlayer-RTSP-Android回调InitCallback 提出问题 EasyPlayer-RTSP-Android如何获取拉流的回调? 解决问题 在Client.java中有一个SourceCallBack接口,定义了拉流的各个回调方法: 1、onMediaInfoCallBack方法获取流的参数MediaInfo,获取解码器类型,fps,sps,pps等。 2、onSourceCallBack方法获取流数据。 3、onEvent方法的state参数展示连接的状态: 1:连接中,2:连接错误,3:连接线程退出 在EasyPlayerClient中将状态发送出去: 来源: https://www.cnblogs.com/TSINGSEE/p/11792383.html

海康大华安防监控网络摄像头网页无插件直播流媒体RTSP专用播放器方案之EasyPlayer-RTSP-Android如何获取拉流的回调?

匿名 (未验证) 提交于 2019-12-03 00:17:01
EasyPlayer是一个RTSP流媒体播放器,在GitHub上开源大部分源码,其主要功能有播放、抓图、录制视频、实时静音/取消静音。 EasyPlayer-RTSP-Android回调InitCallback 提出问题 EasyPlayer-RTSP-Android如何获取拉流的回调? 解决问题 在Client.java中有一个SourceCallBack接口,定义了拉流的各个回调方法: 1、onMediaInfoCallBack方法获取流的参数MediaInfo,获取解码器类型,fps,sps,pps等。 2、onSourceCallBack方法获取流数据。 3、onEvent方法的state参数展示连接的状态: 1:连接中,2:连接错误,3:连接线程退出 在EasyPlayerClient中将状态发送出去: 来源:博客园 作者: TSINGSEE 链接:https://www.cnblogs.com/TSINGSEE/p/11792383.html

Android版与微信Activity侧滑后退效果完全相同的SwipeBackLayout

眉间皱痕 提交于 2019-12-02 12:58:37
本文缘起 因为我做的app里使用了 SwipeBackHelper 的开源库来实现Activity的侧滑后退,本来使用起来一直没什么问题,但在新版本中接入了腾讯x5内核的WebView后就出现了一个小问题。看下图: 图1 图2 图2中两条黑线之间就是图1中所展示的视频播放的区域,但图2中显示的不是视频内容,而是当前的WebActivity下层的MainActivity的部分视图。因为当进入网页播放页面点击视频播放按钮后,视频播放区域会突然变成透明的,直到视频加载出来之后才会开始显示视频内容,该过程持续1秒到数秒不等。本来如果只是闪现一下就消失也没什么大问题,但有的网页中的视频加载过慢,导致这个透明现象出现的时间过长,所以app运营渠道提出需要解决该问题。 问题分析 经测试,该问题出现是因为满足了两个条件: 1.Activity的主题style中满足属性:<item name="android:windowIsTranslucent">true</item> (这也是使用SwipeBackHelper的必要条件); 2.使用x5内核的WebView播放视频。 对于我们的项目来说,x5是不能放弃的,但侧滑退出的效果在三个版本之前就加入了,现在要针对某些页面去掉,也让我觉得很不爽。此时当然是参考微信的效果喽,结果微信给我的结果是这样的: 微信x5内核WebView播放视频效果

Flutter 入门教程——Dart语言介绍

故事扮演 提交于 2019-12-02 05:55:11
目录 介绍 Dart vs Java 一、异步 1、Future 2、Async/await 3、Stream 二、变量声明 1、var 2、final和const 3、dynamic和Object 介绍 Dart 是谷歌开发的计算机编程语言 ,被用于web、服务器、移动端和物联网等领域的开发。Dart是面向对象的、类定义的、单继承的语言。语法类似C语言和JavaScript,支持接口(interfaces)、混入(mixins)、抽象类(abstract classes)、具体化泛型(reified generics)、可选类型(optional typing) 。 2011年10月10至12日Dart在丹麦奥尔胡斯举行的GOTO大会上亮相。由Lars bak和kasper lund创建。 2015年5月Dart开发者峰会上,亮相了基于Dart语言的移动应用程序开发框架 Sky ,后更名为 Flutter。 Dart vs Java 在VM性能层面,Dart VM在内存回收和吞吐量都进行了反复的优化,因此,Dart在Flutter中可以将GC做到10ms以内。毕竟Google在Go(没用VM但有GC)、JavaScript(v8)、Dalvik(Android上的Java VM)上已经有了很多技术积淀。Dart和Java相比,决胜因素并不会是在性能方面。 在语法层面

Service的生命周期与Activity生命周期区别

随声附和 提交于 2019-12-01 16:44:04
碰到一面试题 简述 activity/service生命周期 ? 组件的生命周期 应用程序组件都有一个生命周期,从响应Intent的Android实例开始到这个实例被销毁。在这期间,他们或许有效或许无效,有效时或许对用户可见或许不可见。下面我们就来讨论四个基本组件的生命周期,包括在生命周期内的各种状态,以及状态之间的转换。这几种状态可能的结果是:进程让他们停止, 然后实例被销毁。 一、activity生命周期 一个activity有三个基本的状态: @ 当activity在前台运行时(在activity当前任务的堆栈顶),为活动或者运行状态。这时activity会响应用户的操作。 @ 当activity失去焦点但是对用户仍然可见时为paused暂停状态。此时,别的activity在他的上面,透明或者备有被全部覆盖。所以其中一些暂停的activity也可以被显示。一个暂停的activity是处于活动状态的(他维护着所有的状态保存着信息,并且依然附着在窗口管理器)。 @ 如果一个activity完全被另一个activity所掩盖那他会处于stop状态。但仍然保存着原来的状态和信息。然而,如果别的地方需要更多的内存而且这个activity仍一直处于隐藏状态,那么系统有可能会杀死他的进程。 如果一个activity是暂停或者停止状态,系统可以清理他们占用的内存,或者调用finish()方法

android之Fragment(官网资料翻译)

纵饮孤独 提交于 2019-12-01 04:12:34
Fragment要点 Fragment作为Activity界面的一部分组成出现 可以在一个Activity中同时出现多个Fragment,并且,一个Fragment亦可在多个Activity中使用。 在Activity运行过程中,可以添加、移除或者替换Fragment(add()、remove()、replace()) Fragment可以响应自己的输入事件,并且有自己的生命周期,当然,它们的生命周期直接被其所属的宿主activity的生命周期影响。 设计哲学 Android在3.0中引入了fragments的概念,主要目的是用在大屏幕设备上--例如平板电脑上,支持更加动态和灵活的UI设计。平板电脑的屏幕要比手机的大得多,有更多的空间来放更多的UI组件,并且这些组件之间会产生更多的交互。Fragment允许这样的一种设计,而不需要你亲自来管理 viewhierarchy的复杂变化。 通过将activity的布局分散到fragment中, 你可以在运行时修改activity的外观,并在由activity管理的back stack中保存那些变化.( http://developer.android.com/guide/topics/fundamentals/fragments.html ) 例如, 一个新闻应用可以在屏幕左侧使用一个fragment来展示一个文章的列表

MediaSession

早过忘川 提交于 2019-11-30 11:58:38
我们先来看看如何设计一款音乐播放App的架构,传统的做法是这样的: 注册一个Service,用于异步获取音乐库数据、音乐控制等,在Service中我们可能还需要自定义一些状态值和回调接口用于流程控制 通过广播(其他方式如接口、Messenger都可以)实现Activity和Service之间的通信,使得用户可以通过界面上的组件控制音乐的播放、暂停、拖动进度条等操作 如果我们的音乐播放器还需要支持通知栏快捷控制音乐播放的功能,那么又得新增一套广播和相应的接口去响应通知栏按钮的事件 如果还需要支持多端(电视、手表、耳机等)控制同一个播放器,那么整个系统架构可能会变得非常复杂,我们要花费大量的时间和精力去设计、优化代码的结构。那么有什么方法可以节省这些工作,提高我们的效率,然后还可以优雅地实现上述这些功能呢? Google在Android 5.0中加入了MediaSession框架(在support-v4中同样提供了相应的兼容包,相关的类以Compat结尾,Api基本相同),专门用来解决媒体播放时界面和Service通讯的问题,意在规范上述这些功能的流程。使用这个框架我们可以减少一些流程复杂的开发工作,例如使用各种广播来控制播放器,而且其代码可读性、结构耦合度方面都控制得非常好,因此推荐大家尝试下这个框架。下面我们就开始介绍MediaSession框架的核心成员和使用流程

事件分发机制

别来无恙 提交于 2019-11-27 06:06:59
摘要 大部分的App都是由网络访问,数据储存和GUI交互构成,在Android中网络访问和数据储存分别有Retrofit/Volley,Ormlite/GreeDao;FrameWork 有Rxjava。GUI交互却是无穷无尽和业务相关,对于一个用户来说,他们也大多只关心GUI表现出来的 在android开发设计模式中,最广泛应用的就是监听、回调,进而形成了事件响应的过程。然后处理相应的业务逻辑。 一、 Android分发机制概述: Touch事件分发中只有两个主角:ViewGroup和View。Activity的Touch事件事实上是调用它内部的ViewGroup的Touch事件,可以直接当成ViewGroup处理。 View在ViewGroup内,ViewGroup也可以在其他ViewGroup内,这时候把内部的ViewGroup当成View来分析。 ViewGroup的相关事件有三个:onInterceptTouchEvent、dispatchTouchEvent、onTouchEvent。View的相关事件只有两个:dispatchTouchEvent、onTouchEvent。 先分析ViewGroup的处理流程:首先得有个结构模型概念:ViewGroup和View组成了一棵树形结构,最顶层为Activity的ViewGroup,下面有若干的ViewGroup节点