摘要:今天接到一个电面,途中面试官问到一个问题,如果一个activity在后台的时候,因为内存不足可能被杀死,在这之前如果想保存其中的状态数据,比如说客户填的一些信息之类的,该在哪个方法中进行。 onSaveInstanceState虽然不是生命周期的方法,但只要activity在非主动的情况下杀死,就肯
阅读全文
摘要:1、实现下面的一个需求,控制一个执行函数只能被五个线程访问 上面我们创建了100个线程,随机的执行method方法 现在我们要控制每次只要5个线程可以method方法,如何实现了,可以采用信号量的方法 操作系统的信号量是个很重要的概念,在进程控制方面都有应用。Java 并发库 的Semaphore
阅读全文
摘要:在android handle详解2的基础上,我们来学习ThreadHandler ThreadHandler的本质就是对android handle详解2的实现 HandlerThread其实还是一个线程,该线程内部自己创建了一个looper对象,这个是子线程独有的Looper,用来做消息的取出和
阅读全文
摘要:按照android handler详解分析的原理我们可以知道,在主线程中创建handle对象的时候,主线程默认创建了一个loop对象使用threalocal函数将loop对象和主线程绑定。 我们能不能在子线程中创建一个loop对象和子线程绑定了实际上是可以的 这样我们就在子线程中创建了一个loope
阅读全文
摘要:我们来看一个简单的代码: 首先在主线程中创建handler对象,然后再子线程中调用handle的sendmsg方法,然后再handlemessage中收到消息之后更新UI 我们来分析下handle的详细流程 首先主线程创建的时候会创建调用Loop.prepare()函数,该函数主要做下面的两件事情
阅读全文
摘要:前台就是和用户交互的进程 可见进程例如一个activity被一个透明的对话框覆盖,该activity就是可见进程 服务:service进程 后台一个activity按了home按键就是从前台退回到后台 标准模式:不管任务栈是否存在相同的activity都会创建一个新的activity存储在任务栈中
阅读全文
摘要:整个工程的项目如下: 1、项目的思路是在activity中启动MyService这个服务,在服务中调用 activity的代码: 我们来看看本地native层实现的代码: 第一种方式: 第二种方式: 注意点: 程序代码的下载地址是:
阅读全文
摘要:我们实现下面的一个功能: 1、首先在java层传递一个字符串到c层,c层首先将jstring转换成char*类型,然后将两个字符串相加,然后再再将char*类型转换成jstring,在上层显示出来 我们来看底层程序的代码: 这里一定要注意strcat和strcpy的使用方式: 上面的代码还有一个致命
阅读全文
摘要:我们来看底层native层c的代码: 我们来来看上层activity代码的调用: 我们上层传入的字符串是数子和英文的组合的时候:我们来看底层的打印日志 06-22 15:57:15.433 5863-5863/? E/Native: 123456789:中国无论我的数据节点是就1555556 我们来
阅读全文
摘要:1 添加ndk对log支持若需要添加ndk对log的支持,只需要通过以下2步即可实现。 1.1 修改Android.mk如生成的库文件是“.so文件”,则在Android.mk中添加如下内容:LOCAL_LDLIBS:=-L$(SYSROOT)/usr/lib -llog如生成的库文件是“.a文件”
阅读全文
摘要:1、参看博客:http://www.jianshu.com/p/e576c7e1c403 Android JNI 篇 - JNI回调的三种方法(精华篇) 2、参看博客: JNI层线程回调Java函数关键点及示例 http://blog.csdn.net/fu_shuwu/article/detail
阅读全文
摘要:一、安装mysql 1. 安装需要使用root账号,如果不会设置root账号的请自行google。安装mysql过程中,需要设置mysql的root账号的密码,不要忽略了。 2. 以上3个软件包安装完成后,使用如下命令查询是否安装成功: 查询结果如下图所示,表示安装成功。 从任何主机上使用root用
阅读全文
摘要:onLayout设置子控件的位置,对应一些普通的控件例如Button、TextView等控件,不存在子控件,所以可以不用复写该方法。 向线性布局、相对布局等存在子控件,可以覆写该方法去控制子控件的位置。 1、第一步首先创建一个类继承ViewGroup 2、在该group添加一个TextView,手机
阅读全文
摘要:1、自定义控件首先定义一个类继承View 有时,Android系统控件无法满足我们的需求,因此有必要自定义View。具体方法参见官方开发文档:http://developer.android.com/guide/topics/ui/custom-components.html 一般来说,自定义控件都
阅读全文
摘要:1、android中通过任务队列来管理activity 采用栈的结构就是后进先出 手机里面如果启动多个应用就会启动多个任务栈来管理对应的activity。 主要解决下面的问题:对应的四种启动模式: 1、界面1去启动界面2,在界面2中再去启动界面1,是新创建一个界面1的实例,还是使用后来栈中的已经存在
阅读全文
摘要:如何为不同密度的屏幕提供不同的资源和使用密度独立的单位。 1 使用密度无关像素 坚决杜绝在布局文件中使用绝对像素来定位和设置大小。因为不同的屏幕有不同的像素密度,所以使用像素来设置控件大小是有问题的,在不同的设备上同样的像素可能代表不同的物理屏幕尺寸,所以当使用尺寸的时候,总是使用dp或者sp,dp
阅读全文
摘要:1.获取手机屏幕宽高: 22.根据屏幕宽度为控件设置动态设置宽高: 注意示例: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即可获取屏幕的尺寸。 在一个Activity的onCreate方法中,写入如下
阅读全文
摘要:一. 核心概念与单位详解 1. 什么是屏幕尺寸、屏幕分辨率、屏幕像素密度? 屏幕分辨率越大,手机越清晰 dpi就是dot per inch dot意思是点,就是每英寸上面的像素点数 android原始的api返回的单位都是px,获得屏幕的宽度高度返回的单位都是px,ui设计师在设计图片的时候的单位一
阅读全文
摘要:从Android 6.0版本开始,在安装应用时,该应用无法取得任何权限。 相反,在使用应用的过程中,若某个功能需要获取某个权限,系统会弹出一个对话框,显式地由用户决定是否将该权限赋予应用。 只有得到了用户的许可,该功能才可以被使用。 新的权限机制更好的保护了用户的隐私,Google将权限分为两类,一
阅读全文
摘要:1、app升级下载现在不推荐使用downloadmanager下载: 原因有下面的几个方面: (1)三星note系列部分手机需要手动打开这个权限才能用这个功能,而有些国产手机更加nb了直接个阉割了(downloadmanager),所以考虑到手机的适配性,最后自己编写app下载的后台代码 2、但是这
阅读全文