
Android进阶
胖子luffy
代码界的小白
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
基于Material Design设计的分享文字图片的APP
基于Material Design设计的分享文字图片的APP标签: MD发表文字发送图片bmobandroid基于Material Design设计的分享文字图片的APP2016-03-15 11:31 3488人阅读 评论(18) 收藏 举报 分类: Android项目实战(14) 版权声明:本文为博主原创文章,未经博主允许不得转载转载 2016-03-16 11:16:39 · 901 阅读 · 0 评论 -
[译]图解Android应用的后台任务和提醒
对于很多应用而言,构建后台任务是重要的一环。其中一种方式是:使用AlarmManager注册定时器唤醒未在前台启动的应用(例如闹钟,译者注)。如何优雅低使用定时器类和API,它们是不是你的最佳选择?下面让我们看看如何抉择。 唤醒频率?对于少于60秒的唤醒,定时器类并不是最优解:使用更高效的的Handler来处理频发的任务。 希望用户看到计时?对于API21+(Android5.0以上,译者注),转载 2016-12-19 14:32:54 · 646 阅读 · 0 评论 -
Android之AlarmManager(全局定时器/闹钟)指定时长或以周期形式执行某项操作
1、AlarmManager,顾名思义,就是“提醒”,是Android中常用的一种系统级别的提示服务,可以实现从指定时间开始,以一个固定的间隔时间执行某项操作,所以常常与广播(Broadcast)连用,实现闹钟等提示功能2、AlarmManager的常用方法有三个:(1)set(int type,long startTime,PendingIntent pi);该方法用于设置一次性闹钟,第一个参数表转载 2016-12-19 14:47:11 · 2004 阅读 · 0 评论 -
Android-C代码获取系统属性
1.添加头文件:#include <cutils/properties.h>2.system/core/libcutils/properties.c#define PROPERTY_KEY_MAX 32#define PROPERTY_VALUE_MAX 92int property_get(const char *key, char *value, const char *default原创 2017-03-20 14:15:26 · 5409 阅读 · 0 评论 -
Android 6.0区别U盘和SD卡设备
public static boolean isSdcardExists(Context context) { StorageManager storageManager = StorageManager.from(context.getApplicationContext()); List<VolumeInfo> volumes = storageManager.ge原创 2017-03-15 16:36:01 · 3089 阅读 · 2 评论 -
Android UsageStatsService:要点解析
1、UsageStatsService作用是什么?这是一个Android私有service,主要作用是收集用户使用每一个APP的频率、使用时常;2、如何通过UsageStatsService获取用户使用APP的数据?(1)必须要具备系统权限;(APP内置在/system/app下)(2)必须要在manifest中申明权限:PACKAGE_USAGE_STATS;例如: [html] view pl转载 2016-11-23 15:40:12 · 5495 阅读 · 1 评论 -
实现Recovery形式本地化显示文本定制(recovery_l10n工具的使用
前言:在实际的ROM修改中,Recovery的修改还是会经常遇到的,这篇文章主要讲解如何修改Recovery字符串。 首先我们先了解下大概的流程。1.screen_ui.cpp 中的ScreenRecoveryUI::Init() 负责加载基本资源信息。2.Init()调用 LoadLocalizedBitmap("installing_text",转载 2017-03-22 15:51:29 · 3686 阅读 · 1 评论 -
Android5.1 Framework分析----如何在SystemServer中添加系统服务
本文以mtk android5.1为研究对象。Android的系统服务都是托管给ServiceManager管理的,我们可以自定义一个自己的服务,并将其添加到ServiceManager中,本文以添加一个Tts语音服务为例,供应用层调用。1、首先,在frameworks/base/core/Java/android/app中新建一个aidl文件 ITtsManager.aidl,内容如下:[java转载 2016-11-17 20:17:21 · 831 阅读 · 0 评论 -
Android 联系人数据库contacts2.db介绍
参考:http://blog.youkuaiyun.com/flying_vip_521/article/details/7258805https://my.oschina.net/gabriel1215/blog/492051项目描述:该项目为基于Android平台的手机通讯录,主要模块分为四个部分:联系人管理模块,通话记录管理模块原创 2016-11-09 16:50:41 · 7199 阅读 · 0 评论 -
Android procrank && dumpsys meminfo使用详解
procrank:/data/anr # procrank PID Vss Rss Pss Uss cmdline29024 83948K 45468K 44255K 43832K /system/bin/mediaserver3原创 2016-05-24 14:15:59 · 3472 阅读 · 0 评论 -
在Android 5.0中使用JobScheduler
在Android 5.0中使用JobScheduler原文链接 : using-the-jobscheduler-api-on-android-lollipop译者 : Mr.Simple校对者 : Mr.Simple在这篇文章中,你会学习到在Android 5.0中如何使用JobScheduler API。JobScheduler API允许开发者在符合某些条件时创建执行转载 2016-04-21 11:23:10 · 1106 阅读 · 0 评论 -
安卓开发-签名
在Android系统中,所有安装到系统的应用程序都必有一个数字证书,此数字证书用于标识应用程序的作者和在应用程序之间建立信任关系,如果一个 permission的protectionLevel为signature,那么就只有那些跟该permission所在的程序拥有同一个数字证书的应用程序才能取得该权限。Android使用Java的数字证书相关的机制来给apk加盖数字证书,要理解android转载 2016-01-07 17:35:55 · 548 阅读 · 0 评论 -
App缓存管理
无论大型或小型应用,灵活的缓存可以说不仅大大减轻了服务器的压力,而且因为更快速的用户体验而方便了用户。Android的apk可以说是作为小型应用,其中99%的应用并不是需要实时更新的,而且诟病于蜗牛般的移动网速,与服务器的数据交互是能少则少,这样用户体验才更好,这也是我们有时舍弃webview而采用json传输数据的原因之一。 采用缓存,可以进一步大大缓解数据交互的压力,特此,我们简略列举转载 2016-04-19 11:26:52 · 2901 阅读 · 0 评论 -
App调试内存泄露之Context篇(下)
5. AsyncTask对象 我N年前去盛大面过一次试,当时面试官极力推荐我使用AsyncTask等系统自带类去做事情,当然无可厚非。 但是AsyncTask确实需要额外注意一下。它的泄露原理和前面Handler,Thread泄露的原理差不多,它的生命周期和Activity不一定一致。 解决方案是:在activity退出的时候,终止AsyncTask中的后转载 2016-04-19 14:44:56 · 665 阅读 · 0 评论 -
Android IPC进程通信之Messager方式
IPC(Inter-Process Communication,进程间通信),安卓进程进的通信方式常用的有两种:AIDL方式和Messager方式。前者一般用于跨应用,后者长用于应用间,Messenger本质虽然也是AIDL,但与其不同的是,它是基于Handler,故为线程安全的,而AIDL支持并发,不是线程安全的。下面是Messenger方式通信的一个简单的例子:在demo中,一个MainActi原创 2016-03-16 16:10:19 · 1108 阅读 · 0 评论 -
Android APK反编译就这么简单 详解(附图)
在学习Android开发的过程你,你往往会去借鉴别人的应用是怎么开发的,那些漂亮的动画和精致的布局可能会让你爱不释手,作为一个开发者,你可能会很想知道这些效果界面是怎么去实现的,这时,你便可以对改应用的APK进行反编译查看。下面是我参考了一些文章后简单的教程详解。(注:反编译不是让各位开发者去对一个应用破解搞重装什么的,主要目的是为了促进开发者学习,借鉴好的代码,提升自我开发水平。)转载 2016-04-14 10:28:14 · 377 阅读 · 0 评论 -
Android IntentService
IntentService是一个含有消息循环的Service,它是一个service,所以service相关具有的特性他都有,同时他还有一些自身的属性,其内部封装了一个消息队列和一个HandlerThread,在其具体的抽象方法:onHandleIntent方法是运行在其消息队列线。 IntentService源代码:/* * Copyright (C) 2008 The A...原创 2018-12-11 12:38:25 · 467 阅读 · 0 评论 -
Android 6.0变化之休眠模式
休眠:Android 6.0最大变化之一就是加入了新的电量管理模式:休眠模式,当设备一段时间不用的时候,当屏幕关闭的时候,系统会自动进入休眠模式。这样所有的App都将进入挂起模式,不能在接入 网络等一些操作。 当然系统也会定期的退出休眠模式,来完成App延迟的工作,在这个空窗期(我暂且就这么叫),系统会运行所有同步,工作,提醒等,并允许app接入网络。 当过了空窗期后,系统会重新进入休眠期,Ap转载 2016-12-19 14:30:33 · 2020 阅读 · 0 评论 -
Android之MediaStore
在日常开发中,我们经常会使用MediaStore来获取手机的音频、图片、视频等相关信息。下面3个是常见的内部类:MediaStore.Audio获取音频信息的类MediaStore.Images获取图片信息MediaStore.Video获取视频信息1、MediaStore.Audio在这个类中我们可以获取音频的专辑、艺术家、流派等等,通过 MediaStore.Audio.AlbumColumns转载 2016-12-14 15:24:01 · 10617 阅读 · 4 评论 -
安卓应用运行、卸载、清除数据、强制停止
1、卸载应用 Uri packageURI = Uri.parse("package:" + packageName); Intent intent = new Intent(Intent.ACTION_DELETE, packageURI); this.startActivity(intent);2.运行PackageManager pm = getPackageManage原创 2016-02-23 12:34:19 · 3460 阅读 · 0 评论 -
安卓计算APK的应用大小、数据大小、缓存大小等。
mPackageManager.getPackageSizeInfo(packageName, new PkgSizeObserver());class PkgSizeObserver extends IPackageStatsObserver.Stub { @Override public void onGetStatsCompleted(PackageStats原创 2016-03-04 14:45:29 · 3007 阅读 · 0 评论 -
安卓-执行adb命令
String cmd= "";//定义adb命令 Process pp = Runtime.getRuntime().exec(cmd); InputStreamReader ir = new InputStreamReader(pp.getInputStream()); //TODO 操作文件流即可原创 2016-03-30 15:36:48 · 1156 阅读 · 0 评论 -
android性能测试工具之dumpsys
该命令用于打印出当前系统信息,默认打印出设备中所有service的信息,可以在命令后面加指定的service name.有两种方法可以查看service list:1. adb shell dumpsys输出信息的开始部分就是所有运行的service,如下:Currently running services:SurfaceFlinger:accessi转载 2016-03-21 18:50:17 · 756 阅读 · 0 评论 -
fastJson使用demo
//1.json的简单格式{"name":"lisi","age",12} String json1 = "{'name':'lisi','age':12}"; //解析1 JSONObject json1Obj = JSONObject.parseObject(json1); String name = json1Obj.get("na原创 2016-04-25 11:11:17 · 964 阅读 · 0 评论 -
安卓-监听home键
private class HomeBroadcastReceiver extends BroadcastReceiver { private static final String TAG = "HomeBroadcastReceiver"; String SYSTEM_REASON = "reason"; String SY原创 2016-04-25 14:43:42 · 410 阅读 · 0 评论 -
安卓-获取图片/视频的缩略图
public static Bitmap getImageThumbnail(final Context mContext, long id) { return Images.Thumbnails.getThumbnail(mContext.getContentResolver(), id, Images.Thumbnails.MINI_KIND, null);}p原创 2016-04-12 16:36:43 · 908 阅读 · 0 评论 -
安卓-SD卡、U盘插拔广播详解
filter = new IntentFilter();//已拔掉外部大容量储存设备发出的广播(比如SD卡,或移动硬盘), //不管有没有正确卸载都会发出此广播filter.addAction(Intent.ACTION_MEDIA_EJECT);//sd卡存在,但还没有挂载 filter.addAction(Intent.ACTION_MEDIA_UNMOUNTED);//s原创 2016-03-29 11:43:25 · 5518 阅读 · 0 评论 -
多线程断点下载文件
MainActivity.javapublic class MainActivity extends Activity implements android.view.View.OnClickListener{ private Button button; private ProgressBar progressBar; private TextView textView;原创 2016-04-05 14:38:40 · 678 阅读 · 0 评论 -
安卓-HandlerThread详解
一.介绍HandlerThread继承自Thread,当线程开启时,也就是它run方法运行起来后,线程同时创建了一个含有消息队列的Looper,并对外提供自己这个Looper对象的get方法,这就是它和普通Thread唯一不同的地方。二.好处为什么要使用HandlerThread。1.开发中如果多次使用类似new Thread(){...}.start(转载 2016-04-18 22:18:17 · 550 阅读 · 0 评论 -
安卓adb-截图/录屏命令,保存到SD卡,导出到本地
adb shell /system/bin/screencap -p /sdcard/a.png//截屏并保存到/sdcard/a.pngadb pull /sdcard/a.png D:/a.png//将/sdcard/a.png导出到本地D盘,文件名为a.png原创 2016-01-07 17:58:11 · 4069 阅读 · 0 评论 -
安卓jni开发demo
1.在安卓工程(jniTest)下建立一个jni的目录2.在相关的类中(例如:MainActivity.java)加入loadLibrary static int hello = 0; static{ System.loadLibrary("hello-jni");//注意1 hello = hello(); } private nat原创 2016-07-19 11:36:51 · 410 阅读 · 0 评论 -
内存泄漏汇总
内存泄漏汇总1.基本介绍 ---来自caoweic1.1什么是内存泄露?Android进程中某些对象(垃圾对象)已经没有使用价值了,但是它们却可以直接或间接地被引用到,导致无法被GC回收。无用的对象占据着内存空间,使得实际可使用内存变小,导致应用所需要的内存超过这个系统分配的内存限额,这就造成了内存溢转载 2016-07-19 13:36:18 · 1187 阅读 · 2 评论 -
安卓-网络广播详解
mFilter = new IntentFilter();/*wifi功能所对应状态的变化监听,状态可通过 intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE,//WifiManager.WIFI_STATE_UNKNOWN)获取;WIFI_STATE_DISABLED(wifi已经被关闭),WIFI_STATE_DISABLING(wifi正在关闭);W原创 2016-03-16 10:47:53 · 2187 阅读 · 0 评论 -
安卓-获取U盘的路径
filter = new IntentFilter(); filter.addAction(Intent.ACTION_MEDIA_EJECT); filter.addAction(Intent.ACTION_MEDIA_UNMOUNTED); filter.addAction(Intent.ACTION_MEDIA_MOUNTED);原创 2016-03-29 17:13:56 · 7857 阅读 · 1 评论 -
安卓时间相关的广播(Intent.ACTION_TIME_TICK)
1.Intent.ACTION_TIME_TICK 含义:系统每分钟会发出该广播2.用法: IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_TIME_TICK); filter.addAction(Intent.ACTION_TIME_CHANGED); register原创 2016-07-13 16:25:31 · 48636 阅读 · 0 评论 -
Android HandlerThread
HandlerThread继承Thread,是一个包含了Looper的Thread,方便了子线程之间的通信。源码:/* * Copyright (C) 2006 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may ...原创 2018-12-11 13:24:53 · 291 阅读 · 0 评论