activity

test_app.sh

夙愿已清 提交于 2020-01-06 21:47:56
Google 为保证 Android Go 基本性能所做的测试脚本. 需要配合 Linux 和 Userdebug 版本使用. 该测项主测 APP 启动时间已经 PSS、GPU Info 等指标. 错误警报 & 错误原因 测试脚本通过 shell am start 启动 Activity 来进行测量. 有些 Activity 组件名字带有 "$" 字符无法被 shell 传递, 导致 Activity 无法正常启动而导致测试中断. 解决方法 修改测试脚本: adb shell am start -S -W "'''"$package/$activity"'''">/dev/null 来源: 51CTO 作者: 注定分享 链接: https://blog.51cto.com/13726600/2110203

Android Camera后台拍照

Deadly 提交于 2020-01-06 06:14:25
http://item.congci.com/item/android-camera-houtai-paizhao 有许多人希望在不让用户知道的情况下,使用Android后台Service调用摄像头拍照,网上不少资料,都讲到不预览无法实现拍照,涉及到用户隐私,属于非法调用摄像头...怎么办!!! 曾经看到一篇博文,里面有一句经典的话:没有什么是绝对的,没有什么是绕不过去的。接下来就来分析一下怎么绕过去,实现不预览拍照。 要求①:不让用户看到拍照界面 难点:预览界面必须在一个Activity上,而弹出了Activity之后,用户再傻,都知道你在干嘛,怎么办!! 思路:弹出Activity就弹出吧,咱对Activity做手脚,让他全透明,再来个全屏,和无标题栏,不就和没东西弹出来一个效果。 要点②:不预览 难点:非法调用摄像头,怎么办!!报错 "take picture failed ! !" 思路:你要在Activity上有SurfaceView进行预览,那就来一个SurfaceView,打不了咱再对SurfaceView做手脚就是 了...设这SurfaceView长和宽都为0.1 你不是要预览吗,也有,问题是预览框这么小,要是你还能看到那就没办 法了... 好了,不多说,思路有了就开始工作: 首先,用来拍照的Activity布局: < RelativeLayout xmlns

Android Camera(二) Camera程序编写

我们两清 提交于 2020-01-06 06:14:00
Android Camera 相机程序编写      要自己写一个相机应用直接使用相机硬件,首先应用需要一个权限设置, 在AndroidManifest.xml中加上使用设备相机的权限 : <uses-permission android:name="android.permission.CAMERA" />    为你的应用创建自定义的相机,一般步骤如下:   1.检测相机硬件并获取访问   2.建立一个Preview类:需要一个相机预览的类,继承 SurfaceView 类,并实现 SurfaceHolder 接口。   3.建立预览的布局。   4.为拍照建立监听。   5.拍照并且存储文件。   6.释放相机。   因为相机是一个共享资源,所以应该被谨慎管理,这样应用之间才不会发生冲突。   所以使用完相机之后应该调用 Camera.release() 来释放相机对象。   如果不释放,后续的使用相机请求(其他应用或本应用)都会失败。 检测相机硬件   如果你的程序没有在manifest的声明中要求有相机,那么你应该在运行时检查相机的存在与否,主要用了 PackageManager.hasSystemFeature() 方法。比如: /** Check if this device has a camera */ private boolean

react-native 调用原生Activity页面

房东的猫 提交于 2020-01-05 17:15:29
index.android.js import React, {Component} from 'react'; import { AppRegistry, StyleSheet, Text, View, NativeModules, } from 'react-native'; class www extends Component { render() { return ( <View style={styles.container}> <Text style={styles.instructions} onPress={() => this.onClick()}> 点我 </Text> </View> ); } /** * 调用原生页面 * ControlPCActivity是你想跳转到的页面 */ onClick() { NativeModules.MyMapIntentModule.startActivityByClassname('com.www.ControlPCActivity') } } const styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center', alignItems: 'center', backgroundColor: '#F5FCFF', },

Android 解读Event和Main Log

最后都变了- 提交于 2020-01-04 05:35:03
1 Android P EventLogTags 文件 Android P 9.0.0 所有EventLogTags文件List: system/bt/EventLogTags.logtags system/core/liblog/event.logtags system/core/libsysutils/EventLogTags.logtags system/core/logcat/event.logtags system/core/logd/LogTags.cpp system/core/logd/event.logtags system/core/storaged/EventLogTags.logtags frameworks/base/core/java/android/app/admin/SecurityLogTags.logtags frameworks/base/core/java/android/content/EventLogTags.logtags frameworks/base/core/java/android/net/EventLogTags.logtags frameworks/base/core/java/android/os/EventLogTags.logtags frameworks/base/core/java/android/speech

android App启动过程

两盒软妹~` 提交于 2020-01-04 05:25:50
本文以图文并茂的形式简单介绍一个APP从启动到主页面显示经历了哪些流程,以及实现的原理。不介绍具体源码,仅仅构建一个大体框架。 启动流程: ①点击桌面App图标,Launcher进程采用Binder IPC向system_server进程发起startActivity请求; ②system_server进程接收到请求后,向zygote进程发送创建进程的请求; ③Zygote进程fork出新的子进程,即App进程; ④App进程,通过Binder IPC向sytem_server进程发起attachApplication请求; ⑤system_server进程在收到请求后,进行一系列准备工作后,再通过binder IPC向App进程发送scheduleLaunchActivity请求; ⑥App进程的binder线程(ApplicationThread)在收到请求后,通过handler向主线程发送LAUNCH_ACTIVITY消息; ⑦主线程在收到Message后,通过发射机制创建目标Activity,并回调Activity.onCreate()等方法。 ⑧到此,App便正式启动,开始进入Activity生命周期,执行完onCreate/onStart/onResume方法,UI渲染结束后便可以看到App的主界面。 上面的一些列步骤简单介绍了一个APP启动到主页面显示的过程

Android深入四大组件(四)Android8.0 根Activity启动过程(前篇)

自古美人都是妖i 提交于 2020-01-04 05:21:37
前言 在几个月前我写了 Android深入四大组件(一)应用程序启动过程(前篇) 和 Android深入四大组件(一)应用程序启动过程(后篇) 这两篇文章,它们都是基于Android 7.0,当我开始阅读Android 8.0源码时发现应用程序(根Activity)启动过程照Android 7.0有了一些变化,因此又写下了本篇文章,本篇文章照此前的文章不仅流程发生变化,而且增加了一些分析,算是升级版本。由于篇幅较长,Android8.0 根Activity启动过程仍旧分为前篇和后篇来进行讲解。 1.概述 Activity的启动过程分为两种,一种是根Activity的启动过程,另一种是普通Activity的启动过程,根Activity指的是应用程序启动的第一个Activity,因此根Activity的启动过程一般情况下也可以理解为应用程序的启动过程。普通Activity指的是除了应用程序启动的第一个Activity之外的其他的Activity。这里介绍的是根Activity的启动过程,它和普通Activity的启动过程是有重叠部分的,只不过根Activity的启动过程一般情况下指的就是应用程序的启动过程,更具有指导性意义。想要了解普通Activity的启动过程的的同学可以参考根Activity的启动过程去自行阅读源码。 根Activity的启动过程比较复杂,因此这里分为三个部分来讲

android WebView Note

老子叫甜甜 提交于 2020-01-04 03:31:10
在Android手机中内置了一款高性能webkit内核浏览器,在SDK中封装为一个叫做WebView组件。 什么是webkit WebKit是Mac OS X v10.3及以上版本所包含的软件框架(对v10.2.7及以上版本也可通过软件更新获取)。 同时,WebKit也是Mac OS X的Safari网页浏览器的基础。WebKit是一个开源项目,主要由KDE的KHTML修改而来并且包含了一些来自苹果公司的一些组件。 传统上,WebKit包含一个网页引擎WebCore和一个脚本引擎JavaScriptCore,它们分别对应的是KDE的KHTML和KJS。不过, 随着JavaScript引擎的独立性越来越强,现在WebKit和WebCore已经基本上混用不分(例如Google Chrome和Maxthon 3采用V8引擎,却仍然宣称自己是WebKit内核)。 这里我们初步体验一下在android是使用webview浏览网页,在SDK的Dev Guide中有一个WebView的简单例子 。 在开发过程中应该注意几点: 1.AndroidManifest.xml中必须使用许可"android.permission.INTERNET",否则会出Web page not available错误。 2.如果访问的页面中有Javascript,则webview必须设置支持Javascript。

架构 MVC MVP MVVM 简介 MD

北城以北 提交于 2020-01-04 00:19:17
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina.com 目录 目录 MVC 架构 MVC各层的作用 Android中的实际情况 演示案例 BaseModel Callback SampleModel SampleActivity 案例总结 MVP 架构 基本概念 特点 MVP各层的作用 用MVP架构编写登录模块完整版 定义Presenter接口(可选) 定义Model接口(可选)及MP回调接口(必选) 定义View接口(必选) 定义Presenter的实现类 定义Model的实现类 让Activity实现View接口 用MVP架构编写登录模块简洁版 View层接口 Activity Presenter Model MVVM 架构 如何选择 MVC 架构 MVC各层的作用 M层:Model,SQL、XML、JSON,数据模型。负责与数据处理相关的业务逻辑的处理,比如数据库读写操作,网络请求操作,复杂的算法,耗时的任务等。Model是一个应用系统的核心部分,代表了该系统实际要实现的所有功能。当M层完成数据处理后,会通知Controller更新View。 V层:View,XML布局、自定义View,Java编写的View

都说衣不如新人不如故,技术是学新不学旧的?IPC+view+Handler+线程。

吃可爱长大的小学妹 提交于 2020-01-03 04:06:20
刚刚过去2019,新的一年2020年。都说衣不如新人不如故,技术是学新不学旧的?可是旧的知识不巩固,根基不固很容易在面试或者实战遇到很大的问题的 以下知识点PDF版后续可见 更多面试内容等等 更多完整项目下载。未完待续。源码。图文知识后续上传github。 可以点击 关于我 联系我获取 https://github.com/xiangjiana/Android-MS 一丶线程篇 1、线程池的好处? 四种线程池的使用场景,线程池的几个参数的理解? 参考答案 : 使用线程池的好处是减少在创建和销毁线程上所花的时间以及系统资源的开销,解决资源不足的问题。如果不使用线程池,有可能造成系统创建大量同类线程而导致消耗完内存或则“过度切换”的问题,归纳总结就是 重用存在的线程,减少对象创建、消亡的开销,性能佳。 可有效控制最大并发线程数,提高系统资源的使用率,同时避免过多资源竞争,避免堵塞 提供定时执行、定期执行、单线程、并发数控制等功能。 Android 中的线程池都是直接或间接通过配置 ThreadPoolExecutor 来实现不同特性的线程池.Android 中最常见的类具有不同特性的线程池分别为: newCachedThreadPool : 只有非核心线程,最大线程数非常大,所有线程都活动时会为新任务创建新线程,否则会利用空闲线程 ( 60s 空闲时间,过了就会被回收,所以线程池中有