前面两篇文章简介了JNI层跟Java层的一些相应关系,包含方法名,数据类型和方法名称等,相信在理论层面.可以非常好地帮助我们去了解JNI在Native本地开发中的作用,对JNI的一些概念也有了一个初步的认识,因为表达能力或者理解还是有限,有些地方讲得不是非常清楚.假设各位朋友有认为云里雾里,欢迎大家留言一起学习. 概念上的理解有助于我们更好地认识JNI.而一些实际点的样例则可以更好地帮我们从代码上去掌握并应用JNI. 在第一篇文章,我们是从一个小样例来入门学习的,在当中,我们通过JNI层函数返回…
Android中的SQLite使用学习 SQLite是非常流行的嵌入式关系型数据库,轻载, 速度快,而且是开源.在Android中,runtime提供SQLite,所以我们可以使用SQLite,而且是全集的SQLite.SQLite提供 SQL接口,和一般的数据库一样.但是Android的API不采用JDBC,JDBC消耗太多的资源. SQLite支持绝大部分SQL-92标准,不支 持:FOREIGN KEY constraints, nested transactions, RIGHT OUT…
一. 首先写了java文件: public class HeaderFile { private native void  doVoid(); native int doShort(); native void doArray(Object[] o ); native int doInt(int i);      //byte ,short ,int,long,float,double ,boolean,char native int doInt(double d);    //byte ,sh…
一.ContentProvider简介        当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据.虽然使用其他方法也可以对外共享数据,但数据访问方式会因数据存储的方式而不同,如:采用文件方式对外共享数据,需要进行文件操作读写数据:采用sharedpreferences共享数据,需要使用sharedpreferencesAPI读写数据.而使用ContentProvider共享数据的好处是统一了数据访问方式. 二.Uri类简介  …
阅读书籍: Android开发艺术探索 Android开发进阶从小工到专家 对线程池原理的简单理解: 创建多个线程并且进行管理,提交的任务会被线程池指派给其中的线程进行执行,通过线程池的统一调度和管理使得多线程的使用更简单,高效. 使用线程池的优势: 1.重用线程池中的线程,避免因为线程的创建和销毁所带来的性能开销. 2.能有效控制线程池的最大并发数,避免大量的线程之间因互相抢占系统资源而导致的阻塞现象. 3.能够对线程进行简单的管理,并提供定时执行以及指定间隔循环执行等功能. ThreadPo…
1,关于java端类及接口定义请参考: android NDK 实用学习-获取java端类及其类变量 2,对传过来的参数进行赋值: 对bool类型成员进行赋值  env->SetBooleanField(jobj, jfbdata, false); 对double类型成员进行赋值 env->SetDoubleField(jobj, jfddata, 209.22); 对int类型成员进行赋值 env->SetIntField(jobj, jfidata, ); 对byte类型成员进行赋值…
本文我们来讨论一下JNI如何将Java类型映射到本机C类型. 一.基本数据类型 如下图表整理了Java基本类型和native对应的关系: Java类型 Native类型 描述 boolean jboolean unsigned 8 bits byte jbyte signed 8 bits char jchar unsigned 16 bits short jshort signed 16 bits int jint signed 32 bits long jlong signed 64 bit…
本篇讲的是如何用searchView实现搜索框,其实原理和之前的没啥差别,也算是个复习吧. 一.Manifest.xml 这里我用一个activity进行信息的输入和展示,配置方式还是老样子,写一个输入框的配置文件,然后写定一个action <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/a…
在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框,AlertDialog实现方法为建造者模式.下面我们简单模拟一个挑媳妇的选择确定对话框(单选)对话框,不同于示例二之处在于本次只要不确定就可以后悔哦,如下图: Layout界面代码: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xml…
1. 基本作用: Activity的 onSaveInstanceState() 和 onRestoreInstanceState()并不是生命周期方法,它们不同于 onCreate().onPause()等生命周期方法,它们并不一定会被触发.当应用遇到意外情况(如:内存不足.用户直接按Home键)由系统销毁一个Activity时,onSaveInstanceState() 会被调用. 但是当用户主动去销毁一个Activity时,例如在应用中按返回键,onSaveInstanceState()就…
1.先看一下最简单的进度条示例 EG: package com.sxz.android.thread; import java.util.concurrent.atomic.AtomicBoolean;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.widget.ProgressBar;public cla…
最近刚开始学web,发现好的颜色搭配可以让自己的网页更加美观, 中午不想做事,就无聊滴花了两个小时测试了所有颜色的编码,总结如下 新手没有什么吊炸天的技术,仅仅是一份辅助的文档,有兴趣的朋友可以收藏下, 开发中对于颜色的设置还是比较使用的, 以下是对color颜色的十六进制的编码的总结,纯手工测试,转载请说明出处 白色 #FFFFFF 象白色 #FFFFF0 亮黄色 #FFFFE0 黄色 #FFFF00 雪白色 #FFFAFA 花白色 #FFFAF0 柠檬绸色 #FFFACD 米绸色 #FFF8…
// // main.swift // LessonSwift-03 // // Copyright (c) 2015年 韩俊强. All rights reserved. // import Foundation // 声明一个类, 我们用class关键字修饰 // 类可以被继承, 它是引用类型 class Student { var name = "小米" var gender = "男" var age = 18 } // 创建一个student实例 let…
Log是开发过程中.对于我们调试程序非常重要的一个工具,有非常多时候,我们正是通过Log才干够看清楚程序是不是真的依照我们想像中的模式在跑,从而定位到问题所在的地方.而在Android开发中,毫无疑问,要是没有了logcat.我们调试程序的时候,就会痛苦死. 在NDK的开发中,虽然我们是利用C/C++来开发程序的,然后通过载入共享库的方法来调用C/C++程序,Android也提供了一套方法.能够让我们在LogCat中看到在C/C++代码中的数据流向,帮我们定位问题. 这一篇文章就简单地来说一下.…
原地址:http://blog.csdn.net/i5suoi/article/details/19036975 最近在研究android应用中的安全问题,貌似只有将核心代码写到JNI底层才是最安全的.通过底层来判断签名是否正确,如果正确则继续执行核心代码,否则退出程序,这样就可以防止别人恶意反编译,并进行二次打包.所以这里的关键就是如何在JNI中获得签名. 我上网查了好多资料,都没有现成的答案,但是我慢慢的找到了一些思路,于是潜心研究,终于有了结果.不敢独享,所以过来分享给大家. 大家都知道,…
1,读此文章前我假设你已经读过: android NDK 实用学习-获取java端类及其类变量 android NDK 实用学习-java端对象成员赋值和获取对象成员值 2,java端类对象的构造: ①首先获取类; ②获取类的无参构造函数: jmethodID initID = env->GetMethodID(jcSetDataMgr, "<init>", "()V"); ③构造类实例: jobject jresult = env->New…
好几个月没写文章了,使用xamarin android也快接近两年,还有一个月职业生涯就到两个年了,从刚出来啥也不会了,到现在回头看这个项目,真jb操蛋(真辛苦了实施的人了,无数次吐槽怎么这么丑),怪自己太年轻了,还好是给指定行业的人使用. 重新学习思考之后,再看自己在项目中的某些实现的代码,的确不尽人意,甚至想骂自己. 项目经常改,改来该去,代码一直增加,一个fragment也没什么功能,接近1000行的代码,用region括起来,开看起来还挺整齐的,找的时候就凉了.究其原因,没有一种模式,所…
今天遇到一些关于在子线程中操作Handler的问题,感觉又要研究源代码了,但是关于Handler的话,我之前研究过,可以参考这篇文章:http://blog.csdn.net/jiangwei0910410003/article/details/17021809.但是这篇文章没有说的那么深入了,所以这次就更深入的解读一下. 摘要 Android中的应用程序都是通过消息驱动的,系统为每一个应用程序维护一个消息队列(MessageQueue),应用程序的主线程不断的从这个消息队列中获取消息(Loop…
在Kivy中,通过pyjnius扩展能够间接调用Java代码,而pyjnius利用的是Java的反射机制.可是在Python对象和Java对象中转来转去总让人感觉到十分别扭.好在android提供了binder这个进程间通信的功能,Java中的Service也是基于Binder的C++代码封装来实现进程间通信的,这也为从Python代码中绕开pyjnius直接訪问Java代码提供了可能,既然Java的Service是基于C++的封装来实现的,也相同能够在Python中封装相同的C++代码,这篇文…
1.概述首先,需要提出一个概念,那就是hybrid,主要意思就是native原生Android和h5混合开发.为什么要这样做呢?大家可以想象一下针对于同一个活动,如果使用纯native的开发方式,Android和iOS两边都要维护同一套界面甚至是逻辑,这样开发和维护的成本会很大,而使用hybrid的开发方式的话,让前端的同学去写一套界面和逻辑,对于native端来说只要使用对应的容器去展示就可以了(对于Android来说这个容器当然就是WebView).那为什么不所有的页面都使用这种方式开发呢?…
最近做了一个应用,要求如下: 程序运行之后的一段时间,分别触发3个不同的事件.当然很快就想到了Android中的AlarmManager和BroadcastReceiver.但是毕竟Mono环境和Java环境还是有所不同的,那么在Mono环境下如何实现呢? 最初我是想获取3个AlarmManager来实现,每个AlarmManager控制一个事件的发生,采用3个不同的BroadcastReceiver来接受传递过来的Intent消息,但觉得这样有点浪费资源.后来仔细查看Api才发现只要合理的设置…
在Xamarin android中双击返回键退出程序的第一种做法 思路就是当用户按下返回键的时间超过两秒就退出,根据Keycode.Back判断用户按下的是返回键,重写这个OnKeyDown DateTime? firstTime; public override bool OnKeyDown(Keycode keyCode, KeyEvent e) { if (keyCode == Keycode.Back && e.Action == KeyEventActions.Down)//判断…
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 简单介绍下Android studio新建项目的目录结构. 常用项目结构类型 在Android Studio中,提供了以下几种项目结构类型. 我们一般常用以下两种结构类型: Project 结构类型 个人更喜欢这种结构类型. .gradle: Gradle编译系统,版本由gradle-wrapper.properties指定. .idea:Android Studio IDE所需的文件,生成的工程配置文件. app:AS创建工程…
手机应用开发中常常会使用到数据库存储一些资料或者进行数据缓存,android中为我们提供了一个轻量的数据库.在上层进行了一层封装,同一时候还为我们提供了ContentProvider的框架.方便我们进行数据操作.以及在不同的程序之间进行数据共享. 本文介绍一下,我在使用数据库的一些我觉得比較好的习惯,欢迎与我讨论. 关于框架 通常网络操作.Json解析.我都会使用框架,这样能够非常好的帮助我处理异常.处理异步操作.可是数据库操作我则使用自带的SQLiteHelper和ContentProvide…
使用WebView控件 与其他控件的使用方法相同 在layout中使用一个<WebView>标签 WebView不包括导航栏,地址栏等完整浏览器功能,只用于显示一个网页 在WebView中加载Web页面,使用loadUrl() WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com"); 注意在manifest文件中加入访问互联网的…
1. Socket介绍 2. ServerSocket的建立与使用 3. 使用ServerSocket建立聊天服务器-1 4. 使用ServerSocket建立聊天服务器-2 5. 在Android中创建Socket客户端 ------------------------------------------------------------------ 工程源码:SocketDemo.zip 服务器端 - Java工程:ServerSocketDemo 客户端 - Android工程:Andr…
Android中内置了sqlite,但是常用的开发语言java是面向对象的,而数据库是关系型的,二者之间的转化每次都很麻烦(主 要是我对sql语言不熟悉).而Java Web开发中有很多orm框架,但是想直接放到Android上用有些麻烦.尝试了一下找Android的orm框架,说实话还有好几个. 实现考虑的是:androrm   官网:http://androrm.the-pixelpla.net/   说实话,这个我实在没有弄懂,一共两个包.   一个是依赖包:Apache Commons…
在xamarin android的开发中,activity传递数据非常常见,下面我也来记一下在android中activity之间传递数据的几种方式, Xamarin Android中Activity之间传递一个简单的数值 //传入 Intent it = new Intent(this,typeof(OtherActivity)); it.PutExtra("name","科比") StartActivity(it); //接收 string Name = Int…
Android中Java与web通信不是新的技术了,在android公布之初就支持这样的方式,2011年開始流行,而这样的模式开发也称作Hybird模式. 这里对android中的Java与web通信方式做一下总结.Android中有3种方式能够实现Java与web通信. 1.重写WebViewClient private class MyWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUr…
Android中内置了sqlite,但是常用的开发语言java是面向对象的,而数据库是关系型的,二者之间的转化每次都很麻烦(主要是我对sql语言不熟悉).而Java Web开发中有很多orm框架,但是想直接放到Android上用有些麻烦.尝试了一下找Android的orm框架,说实话还有好几个. 实现考虑的是:androrm 官网:http://androrm.the-pixelpla.net/ 说实话,这个我实在没有弄懂,一共两个包. 一个是依赖包:Apache Commons - Lang …