
android
土戈
软件开发
展开
-
【Android进阶】-AIDL使用解析
Android系统中,各应用程序都运行在自己的进程中,通常情况下,各进程之间无法直接进行数据交换。为了实现这种跨进程通信(InterProcess communication,简称IPC),Android提供了AIDL Service。一、AIDL Service简介Android的远程Service调用与Java的远程方法调用(RMI)基本相似,都是先定义一个远程调用接口,然后为该接口提供一个实现类。 本地Service的onBind方法会将Service的代理对象(IBinder对..转载 2021-01-12 10:40:43 · 239 阅读 · 0 评论 -
Android:JNI 与 NDK到底是什么?(含实例教学)
前言在Android开发中,使用NDK开发的需求正逐渐增大 但很多人却搞不懂JNI与NDK到底是怎么回事 今天,我将先介绍JNI与NDK& 之间的区别,手把手进行NDK的使用教学,希望你们会喜欢目录1. JNI介绍1.1 简介定义:Java Native Interface,即Java本地接口 作用: 使得Java与 本地其他类型语言(如C、C++)交互即在Java代码 里调用C、C++等语言的代码 或C、C++代码调用Java代码...转载 2021-01-11 20:12:57 · 223 阅读 · 0 评论 -
Android Studio目录结构详解
Android Studio目录结构.png.idea:AS生成的工程配置文件,类似Eclipse的project.properties。app:AS创建工程中的一个Module。gradle:构建工具系统的jar和wrapper等,jar告诉了该工程如何与系统安装的gradle构建联系build:构建目录libs:依赖包,包含jar包和jni等包。src:源码main:主文件夹java:Java代码,包含工程和新建是默认产生的Test工程源码。res:资源文件layout...转载 2021-01-11 09:37:22 · 1961 阅读 · 2 评论 -
Android 四大组件,五大存储,六大布局
Android 四大组件android四大组件分别是:Activity, service,content provider,broadcast receiver一、Activity1、概念:android 中,Activity 相当于一个页面,可以在Activity中添加Button、CheckBox 等控件,一个android 程序有多个Activity组成。2、生命周期:3、四中启动模式Standard 模式: standard 模式是android 的默认启动模式,在.转载 2021-01-06 17:12:02 · 354 阅读 · 0 评论 -
Android Intent的隐示启动(启动其他APP界面并传递数据)
显式启动:直接指定要跳转的Activity类名,不用过滤,效率高,适用于同一个应用中的不同Activity跳转 隐式启动:需要过滤,相对耗时,但可以找到所有匹配的应用。适用于不同应用之间的Activity跳转。属性component(组件):目的组件 action(动作):用来表现意图的行动 category(类别):用来表现动作的类别 data(数据):表示与动作要操纵的数据...转载 2019-11-11 09:10:26 · 2770 阅读 · 0 评论 -
Android 创建单独的服务运行在后台(无界面)
不给 ActivitysetContentView(......);也就是不给他设置布局文件,public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedIn...转载 2019-11-08 16:35:08 · 1386 阅读 · 0 评论 -
Android:学习AIDL,这一篇文章就够了
1,概述AIDL是一个缩写,AndroidInterface Definition Language,Android接口定义语言。主要有下面这些点:文件类型:用AIDL书写的文件的后缀是 .aidl,而不是 .java。 数据类型:AIDL默认支持一些数据类型,在使用这些数据类型的时候是不需要导包的,但是除了这些类型之外的数据类型,在使用之前必须导包,就算目标文件与当前正在编写的 ...转载 2019-11-08 14:41:24 · 666 阅读 · 0 评论 -
Android 进程间通信的几种实现方式
在android SDK中提供了4种用于跨进程通讯的方式。这4种方式正好对应于android系统中4种应用程序组件:Activity、Content Provider、Broadcast和Service。其中Activity可以跨进程调用其他应用程序的Activity;Content Provider可以跨进程访问其他应用程序中的数据(以Cursor对象形式返回),当然,也可以对其他应用程序的数据...转载 2019-11-08 10:45:56 · 430 阅读 · 0 评论 -
广播详解
1.广播的分类(1)按照发送的方式分类标准广播 是一种异步的方式来进行传播的,广播发出去之后,所有的广播接收者几乎是同一时间收到消息的。他们之间没有先后顺序可言,而且这种广播是没法被截断的。 有序广播 是一种同步执行的广播,在广播发出去之后,同一时刻只有一个广播接收器可以收到消息。当广播中的逻辑执行完成后,广播才会继续传播。(2)按照注册的方式分类动态注册广播 顾名思...转载 2019-11-08 10:30:12 · 979 阅读 · 0 评论 -
Android之进程通讯——广播
MyApplication application = (MyApplication)this.getApplication();不同进程间的通讯,其实Android的四大组件都可以实现。日常,我们用广播,在一个独立的app中使用的较多。或者是系统和app之间使用。在两个自定义的app之间,我们也写个例子,表明广播是很好用的!!在这里就自定义两个app:BroadCast...转载 2019-11-08 09:33:33 · 196 阅读 · 0 评论 -
Android 系统广播Intent Action常量
1、Intent.ACTION_AIRPLANE_MODE_CHANGED //关闭或打开飞行模式时的广播2、Intent.ACTION_BATTERY_CHANGED //充电状态,或者电池的电量发生变化//电池的充电状态、电荷级别改变,不能通过组建声明接收这个广播,只有通过Context.registerReceiver()注册3、Intent.ACTION_BATTERY_LOW...转载 2019-11-07 17:47:19 · 1619 阅读 · 0 评论 -
Android 保证Service服务不被杀死的几个方法
Bound绑定:bound形式的服务是指一个应用组件通过调用bindService()方法与服务绑定。一个绑定的服务提供一个接口,允许组件与服务交互,发送请求、获得结果、甚至进行进程间通信。一个绑定的服务只和与其绑定的组件同时运行。多个组件可以同时绑定到一个服务,当全部解除绑定后,服务就会被销毁。虽然分为两类,但是一个服务可以同时使用这两种方式-使用started永久运行,同时允许绑定。只要在...转载 2019-11-07 17:10:47 · 1519 阅读 · 0 评论 -
Android中一个Activity关闭另一个Activity或者在一个Activity中关闭多个Activity
各个方案比较下优劣。方案一广播的方式这个是最容易想到的,同时也是网上提供最多的。由于多个Activity要使用,关闭页面的广播最好写在基类BaseActivity中,也可以在各个子页面单独写,但是代码量就增加了。public class BaseActivity extends Activity { //根据需求定义自己需要关闭页面的action pu...转载 2019-11-07 16:17:14 · 1210 阅读 · 0 评论 -
Android 将后台应用切换到前台
Android 系统中如果想要切换系统中的任务,是需要获取系统权限的,在全局配置文件中添加:<!--排序系统任务权限 重新排序系统Z轴运行中的任务--><uses-permission android:name="android.permission.REORDER_TASKS" />public class TgSystem { public st...转载 2019-11-07 11:50:48 · 7170 阅读 · 3 评论 -
Android SoundPool 的使用
它是一个“pool”,我们可以加载多个音频资源到内存。加载资源到内存是需要花费少许时间的,因此我们需要监听加载资源完毕的事件,在加载完毕后才能进行播放,以免发生不可预期的错误。除了以上介绍外,SoundPool 还有诸多其他功能,诸如调节左右声道的音量值、调整播放的语速、设置播放的优先级以及播放的次数等等。SoundPool 的创建SoundPool 的创建方式在不同版本中会有所不同,为...转载 2019-11-07 11:04:13 · 659 阅读 · 0 评论 -
android获取系统铃声并播放
//获取系统默认铃声的UriUri uri = RingtoneManager.getActualDefaultRingtoneUri(mContext, RingtoneManager.TYPE_RINGTONE);MediaPlayer mediaPlayer = MediaPlayer.create(mContext, uri);mediaPlayer.setLooping(true...原创 2019-11-06 18:19:25 · 1783 阅读 · 0 评论 -
Android 锁屏后Service服务保活(支持9.0)及锁屏后弹activity
service保活问题:后台Service启动正常启动后,锁屏状态下大概80秒左右Service就被暂停了(并没有被杀死),唤醒屏幕后就继续执行。解决思路:Service启动时创建一条通知,与其绑定,这样锁屏或者后台Service都不会被暂停或杀死。代码如下:在Service的onCreate中创建NotificationChannel 并且与服务绑定。 @Overr...转载 2019-11-06 18:06:38 · 7470 阅读 · 2 评论 -
Android中五大Manager详解及使用技巧
一、PowerManager主要是用来控制电源状态,设置屏幕状态,和电池待机状态PowerManagerpm=((PowerManager)getSystemService(POWER_SERVICE));这里我需要保持屏幕长期唤醒,不被锁屏,所以我调用WakeLock。 WakeLockwake=pm.newWakeLock(PowerManage...转载 2019-11-01 11:16:48 · 1541 阅读 · 0 评论 -
Android EditText设置只能输入数字和小数点
有两种写法:一、利用安卓自身的语法。二、利用正则表达式。一、利用安卓自身的语法1.如果设置只输入数字edittext.setInputType( InputType.TYPE_CLASS_NUMBER);此时只会弹出数字输入框,符号点击后不会输入到文字框中2.只能输入数字和小数点edittext.setInputType(InputType.TYPE_CLASS_NUMB...转载 2019-11-01 11:04:57 · 4774 阅读 · 0 评论 -
Android学习笔记:ListView
删除操作listItem.remove(position);//选择行的位置listItemAdapter.notifyDataSetChanged();list.invalidate();listview会删除选择的行,重新更新一、基本用法(1)由于数组中的数据无法直接传递给ListView,我们需要借助适配器(Adapter)来完成。(2)ArrayAdapter可以通...转载 2019-11-01 08:55:49 · 254 阅读 · 0 评论 -
Android自定义控件的三种实现方式
Android 自定义控件三种实现方法为:组合控件,自己绘制,继承原生控件.2.自己绘制控件熟悉view的绘制原理1.measure用来测量View的宽和高。2.layout用来确定View在父容器中放置的位置。3.draw用来将view绘制在屏幕上创建一个类CustomView继承View,实现点击事件接口OnClickListenerpackage t.s.com;...转载 2019-11-01 08:43:39 · 1141 阅读 · 0 评论 -
Android 自定义控件之组合控件
一般的步骤是 a. 将需要实现的自定义控件的布局封装一个单独的xml 布局文件。b. 继承一个ViewGroup 类,然后加载自定义布局文件。c. 设置定义控件的属性。d. 实现一些方法和提供一些接口供用户使用。四、举例,仿微信标题栏。4.2. 在工程的res/layout目录新建自定义控件的布局文件activity_title_view_for_back_and_ad...转载 2019-11-01 08:08:41 · 250 阅读 · 0 评论 -
Android 广播接收器(Broadcast Receivers)
广播接收器用于响应来自其他应用程序或者系统的广播消息。这些消息有时被称为事件或者意图。例如,应用程序可以初始化广播来让其他的应用程序知道一些数据已经被下载到设备,并可以为他们所用。这样广播接收器可以定义适当的动作来拦截这些通信。两个重要的步骤。创建广播接收器 注册广播接收器还有一个附加的步骤,要实现自定义的意图,你必须创建并广播这些意图。创建广播接收器广播接收器需要实现为Bro...转载 2019-10-02 10:52:17 · 549 阅读 · 0 评论 -
Android 服务(Service)
服务是一个后台运行的组件,执行长时间运行且不需要用户交互的任务。即使应用被销毁也依然可以工作。服务基本上包含两种状态 -状态 描述 Started Android的应用程序组件,如活动,通过startService()启动了服务,则服务是Started状态。一旦启动,服务可以在后台无限期运行,即使启动它的组件已经被销毁。 Bound 当Android的应用程序组件通过...转载 2019-10-02 10:48:44 · 203 阅读 · 0 评论 -
startActivityForResult、setResult、onActivityResult用法精炼详解
一、前期基础知识储备(1)ActivityManger管理Activity启动startActivity(Intent intent),启动一个Activity最简单的方式。Activity调用startActivity()方法时,该方法调用请求是发送给操作系统的ActivityManager。ActivityManager负责创建Activity实例并调用其onCreate()方法。Act...转载 2019-10-02 09:49:14 · 690 阅读 · 0 评论 -
SoundPool基本用法
SoundPool 顾名思义是声音的池子。SoundPool 与 MediaPlayer除了低延迟播放之外,SoundPool还可以管理一次渲染的音频流数量。当构建SoundPool对象时,maxStreams参数设置可从此单个SoundPool一次播放的最大流数。 SoundPool跟踪活动流的数量。如果超过了最大数量的数据流,SoundPool会根据优先级自动停止先前播放的数据流,然后...转载 2019-09-29 08:59:15 · 395 阅读 · 0 评论 -
Surface、SurfaceView、SurfaceHolder及SurfaceHolder.Callback之间的关系
一、SurfaceSurface就是“表面”的意思。在SDK的文档中,对Surface的描述是这样 的:“Handle onto a raw buffer that is being managed by the screen compositor”,翻译成中文就是“由屏幕显示内容合成器(screen compositor)所管理的原生缓冲器的句柄”,这句话包括下面两个意思:1....转载 2019-09-29 07:43:49 · 908 阅读 · 0 评论 -
Android 活动(Activity)
活动代表了一个具有用户界面的单一屏幕,如 Java 的窗口或者帧。Android 的活动是 ContextThemeWrapper 类的子类。Android 系统初始化程序是通过活动中的 onCreate() 开始的。活动周期图:回调 描述 onCreate() 这是第一个回调,在活动第一次创建时调用 onStart() 在活动为用户可见时被调用 onRe...转载 2019-10-02 11:21:43 · 174 阅读 · 0 评论 -
Android数据的存储及存储路径
Android的每个应用程序,都有自己的可控的目录。在Setting/Application info里面,可以看到每个应用程序,都有Clear data和Clear cache选项。具体这些目录在哪里呢?用adb连接上设备。如果是连接真实设备,需要有设备的root权限。cd data/data在这个目录下,可以看到每个应用程序都有自己的目录,目录名就是应用程序在Android...转载 2019-10-04 14:13:46 · 13724 阅读 · 0 评论 -
GreenDao3.0框架使用详解
具体怎么使用GreenDao存放数据呢?首先,我们来分析下TempDataDao,DaoMaster,DaoSession是干嘛用的?先看下DaoMaster类里面的代码:package com.myself.zhw.gen;import android.content.Context;import android.database.sqlite.SQLiteDataba...转载 2019-10-04 18:10:16 · 516 阅读 · 0 评论 -
ORM框架之GreenDao3.0集成与注解
GreenDao简介 GreenDao是一个将对象映射到SQLite数据库中的轻量且快速的ORM数据库框架,本文将讲解如何集成GreenDao3.0环境,如何使用GreenDao自动生成代码及注解的使用。 官网地址:http://greenrobot.org/greendao/ GreenDao相较于ORMLite等其他数据库框架有以下优势: 1. 一个精简的库 2...转载 2019-10-05 11:05:05 · 407 阅读 · 0 评论 -
Android 如何访问Assets文件夹里面的资源
Android 读取assets的数据库文件是先把assets目录中的数据库文件拷贝到app的相应目录中,然后再对这个数据库文件进行读写。public class DBManger { public static final String DB_NAME = "festival.db";//数据库 public static final String PACKAGE_NAME ...转载 2019-10-06 10:29:32 · 2746 阅读 · 0 评论 -
adb.exe 已停止工作解决办法
在使用真机调试的时候碰到了adb.exe 已经停止工作的错误。 虽然网上有很多和我一样的教程,但是我觉的还是记录一下自己的情况比较好,毕竟每个人的情况不是都一样的。 下面就来看一下我的解决方案。 出错画面: 一般出现这个错误的原因都是由于adb的默认端都5037,被其他程序占用了。撸主我就碰到过被酷我音乐,鲁大师和被360mobile的exe程式占用了,后来这些程式...转载 2019-10-06 10:42:34 · 667 阅读 · 0 评论 -
Android服务设置为杀不死
微信杀不掉的原因并不是它本身用了什么特殊的技术,只是因为和小米系统签订了合同,所以不会被杀掉,有兴趣的人可以做个试验,做个工程和微信一样的主包名,然后服务名也一样的话,看看是否会被杀掉。想解决这方式,两种方法第一,引导用户赋予应用自启动的权限,并且修改service方法中onStartCommand的flags=1,这样即使被杀掉,也会在被杀掉后重新自启动的。第二,把应用刷成系统级的应用...转载 2019-10-08 08:39:18 · 423 阅读 · 0 评论 -
handler.post和handler.sendMessage的区别和联系
现在大部分人都很熟悉handler这个东西了,我们常用handler的场景无非有两个:1. 异步更新UI2. 延时任务但是我一直有一个困惑,就是handler.post(r)这个方法有什么独特的作用?通过看源码发现,post这个方法是把任务r转成一个message放进了handler所在的线程中的messageQueue消息队列中,并且是立刻发送的消息,这样它既不是异步的也不是延时...转载 2019-09-23 10:11:47 · 1508 阅读 · 0 评论