android
文章平均质量分 54
nshzzu130
比昨天进步就好
展开
-
新的判断网络是否有效的方法
Network activeNetwork = connectivityManager.getActiveNetwork(); if(activeNetwork == null){ System.out.println("activeNetwork == null"); return false; } NetworkCapabilities networkCapabilities...原创 2020-03-10 16:54:39 · 627 阅读 · 0 评论 -
优化gradle编译配置
避免编译不必要的资源 避免编译和打包不测试的资源(例如,其他语言本地化和屏幕密度资源)。为此,您可以仅为“dev”性质的版本指定一个语言资源和屏幕密度,如下面的示例中所示: android { ... productFlavors { dev { ... // The following configur...转载 2020-01-20 17:11:56 · 439 阅读 · 0 评论 -
gradle编译性能剖析
对于较大的项目或者实现大量自定义编译逻辑的项目,您可能需要深入了解编译流程才能找到瓶颈。为此,您可以分析 Gradle 执行编译生命周期的每个阶段和每个编译任务所需的时间。例如,如果编译分析报告显示 Gradle 在配置项目时花费了过多的时间,则表明您需要将自定义编译逻辑移出配置阶段。此外,如果mergeDevDebugResources任务占用了大量编译时间,则表明您还需要将图片转换为 We...转载 2020-01-20 17:05:19 · 277 阅读 · 0 评论 -
android APK签名
android的每个应用安装都需要签名,废话不说: 一、debug签名: eclips自动签名,如果我们自动安装就是eclips自动已经签名过的,是debug签名,有效期为一年。 自动签名文件一般在c:\user\hp\.android下面,可以在eclips中的Window -> Preferences -> Android –> Build看到。 二、rel原创 2013-02-19 17:10:33 · 1708 阅读 · 1 评论 -
一个有趣的java问题
abstract public class A { public A(){ draw(); } abstract void draw(); } public class B extends A{ public int radius=1; public B(int r){ this.radius=r; } @Override void draw() { System.原创 2016-12-07 11:01:22 · 333 阅读 · 0 评论 -
java中证明++操作是非原子的
class SerialNumberGenerator{private static volatile int i=0;//不是同步的,多个线程操作可能会冲突public static int nextSerialNumber(){return i++;}}class CircularSet{private int[] array;private int len;private int index原创 2016-12-23 09:49:07 · 258 阅读 · 0 评论 -
域名可用查询地址
http://panda.www.net.cn/cgi-bin/check.cgi?area_domain=huyusong.com原创 2016-12-24 16:55:59 · 384 阅读 · 0 评论 -
CyclicBarrier计数器的使用
CyclicBarrier计数器当给定的所有线程都处于等待状态时开始运行。 比如有这样一个例子: 5个人参加赛跑,在开跑前要确定所有人都处于准备状态, 5个人用5个线程代表,在赛跑前有个准备 3 2 1的口号 代码如下: import java.util.Random; import java.util.concurrent.BrokenBarrierException; impor原创 2016-12-27 15:27:19 · 347 阅读 · 0 评论 -
android ListView adapter notifyDataSetChanged刷新先决条件
先决条件就是listview在刷新时不能被缓冲圈遮盖。 最近做项目遇到一个问题,ListView有时候能刷新,有时候不行 baidu的答案千篇一律,都是adapter中设置的data引用在外部变 掉了(具体可以百度一下),这么简单的问题,对于一个java开发 人员来说怎么可能看不出来。 我遇到的情况是偶尔能刷新偶尔不能刷新: 各种折腾调试,最后发现,原来是在listview刷新的时候,有一个网络原创 2017-01-06 10:31:14 · 349 阅读 · 0 评论 -
mysql插入用户账号问题
如下文章转自:http://blog.csdn.net/mydriverc2/article/details/43022129 创建snort数据库,创建snort用户,将snort库所有表的所有权限赋予用户snort。 MySQL> create database snort; Query OK, 1 row affected (0.06 sec) 创建数据库转载 2017-01-12 14:42:08 · 316 阅读 · 0 评论 -
Android本地代码直接访问远程数据库(Rxjava方式)
1.引入jar驱动文件,驱动文件:mysql-connector-java-5.0.8-bin.jar,可以自己到网上下载 2.把代码中数据库地址和登录用户名密码替换就可以直接访问 java文件: package com.hd.jdbc; import android.content.DialogInterface; import android.support.v7.app.AppCo...原创 2018-10-05 21:04:52 · 831 阅读 · 0 评论 -
android NDK 开发(1)
申明:本人实测通过。顺便鄙视下网上很多人都没测试过乱发。 文件目录结构为:app/src/main/java/com/hd/jni 1.定义java文件接口 package com.hd.jni; public class JNITest { public native static String getStringFromJNI(); } 2.进入com/hd/jni文件夹...原创 2018-10-05 23:26:26 · 161 阅读 · 0 评论 -
android NDK 开发(2)
java向native层传递参数 1.传递基本类型参数,可以直接使用 //Java层定义接口 public native static int sum(int a, int b); //.c文件native层实现 JNIEXPORT jint JNICALL Java_com_hd_jni_JNITest_sum (JNIEnv *env, jclass jclass1, j...原创 2018-10-07 08:48:02 · 189 阅读 · 0 评论 -
android NDK 开发(3)
1.native层调用java层static方法 //java层定义方法 public native static void request(); //native层执行完request后回调此方法 public static void nativeCallBack() { System.out.println("nativeCallBack"); //native层实现 JNI...原创 2018-10-08 07:35:36 · 136 阅读 · 0 评论 -
获取android手机语言和国家对应简码
/** * 打印所有语言和国家的对应 **/ public static void showAvailableLocales() { StringBuffer sb = new StringBuffer(); Locale[] locales = Locale.getAvailableLocales(); int i = 0; for (Locale loca...原创 2019-07-10 19:08:23 · 722 阅读 · 0 评论 -
android 动态加载控件
android提供动态加载控件,而不需要么次都到XML中声明控件,具体方法如下: LayoutInflater viInflater=(LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE); ViewGroup view=(ViewGroup)viInflater.inflate(R.layout.testreceiver, nul原创 2014-02-17 09:07:35 · 540 阅读 · 0 评论 -
adb shell命令大全
1. 显示系统中全部Android平台: android list targets 2. 显示系统中全部AVD(模拟器): android list avd 3. 创建AVD(模拟器): android create avd --name 名称 --target 平台编号 4. 启动模拟器: emulator -avd 名称转载 2016-09-26 15:45:01 · 674 阅读 · 0 评论 -
Zxing扫码流程梳理
最近在优化扫码功能,对Zxing提供的demo做了一个梳理原创 2016-09-20 18:26:02 · 2107 阅读 · 0 评论 -
如何提高android代码质量
转载地址 http://www.open-open.com/lib/view/open1468976453450.html转载 2016-07-20 14:58:15 · 455 阅读 · 0 评论 -
android handler
android提供了handler来处理UI更新的问题 handler有2种处理方式 1.跟主线程在同以线程,可以实现UI更新,但是操作不当也会有ANR问题 2.跟主线程不在同一个线程,新起一个线程。在新的线程中耗时的操作不会有ANR问题 具体代码如下: package com.stmars.handler; import com.studymar.radiocheckbox.R; i原创 2014-02-11 15:19:31 · 412 阅读 · 0 评论 -
android 对数据库的操作
android使用的数据库为SQLite, 在android中如何建立数据库来保存程序中的数据,具体代码如下: package com.stmars.sqlite; import android.content.Context; import android.database.DatabaseErrorHandler; import android.database.sqlite.SQLit原创 2014-02-15 20:21:50 · 462 阅读 · 0 评论 -
android contentProvider
如果自己的数据对外提供接口,可以让别人修改自己的数据库,就用到contentProvider 怎么样定义自己需要的数据库,具体可以参考如下代码: package com.stmars.sqlite; import org.apache.http.client.utils.URIUtils; import android.content.ContentProvider; import and原创 2014-02-15 20:42:34 · 417 阅读 · 0 评论 -
XML数据解析之DOM解析
private void domParserXml(InputStream xmlInputStream) { Log.i(TAG, "begin domParserXml"); try { DocumentBuilderFactory xmlBuilderFactory=DocumentBuilderFactory.newInstance(); Docume原创 2014-02-15 21:13:30 · 429 阅读 · 0 评论 -
android 权限大全
位置相关: android.permission.WRITE_GSERVICES 允许程序修改Google服务地图(Allows an application to modify the Google service map. ) android.permission.ACCESS_COARSE_LOCATION 允许一个程序访问CellID或WiFi热点来获取粗转载 2014-02-17 09:30:00 · 510 阅读 · 0 评论 -
android launcher
AndroidManifest.xml配置 以上配置,保证android开机时候启动我们的应用。 要想获得已经安装的应用: Intent mainIntent=new Int原创 2014-01-23 17:37:25 · 417 阅读 · 0 评论 -
android list
list展现数据有多种方式,但是共同点是都需要有adapter填充,基本模式如下: (1)在布局文件中加入:ListView控件 (2)获得ListView控件 (3)准备数据 (4)数据填充到adapter (5)将adapter捆绑到ListView上 根据数据的获得方式和复杂度选择不同的list adapter填充方式。 1.简单的adapter填充,只需要根据adatper原创 2014-02-11 09:49:48 · 718 阅读 · 0 评论 -
android实现数据库和UI同步更新
实现类似电话本显示的功能,情景如下: 一部新手机电话本为空,打开电话本,空显示,此时用91助手从PC导入电话号码,此时电话本的UI同步显示出来。 实现如上方法,要用到2个方面的知识,cursorAdapter和Observer package listview; import android.content.Context; import android.database.ContentO原创 2014-02-15 21:07:21 · 4312 阅读 · 1 评论 -
android radiobutton和checkbox的使用
package com.studymar.radiocheckbox; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.widget.CheckBox; import android.widget.CompoundButton; import androi原创 2014-02-10 16:14:20 · 603 阅读 · 0 评论 -
static_cast、dynamic_cast reinterpret_cast和const_cast的区别和使用
关于强制类型转换的问题,很多书都讨论过,写的最详细的是C++ 之父的《C++ 的设计和演化》。最好的解决方法就是不要使用C风格的强制类型转换,而是使用标准C++的类型转换符:static_cast, dynamic_cast。标准C++中有四个类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。下面对它们一一进行介绍。 stat转载 2013-02-27 11:27:21 · 176 阅读 · 0 评论 -
关于c语言中的传值和传址的探究
记得大学老师讲数据交换的时候告诉我们要想达到交换的效果必须要使用传址的方式,为什么是这样? 先看代码: #include using namespace std; void sort(int a,int b){ cout if(a>b){ int m=a; a=b; b=m; } } int main(){ int a=10,b=5原创 2013-02-21 13:08:23 · 360 阅读 · 0 评论 -
Rxjava讲解
转载地址: http://gank.io/post/560e15be2dca930e00da1083转载 2016-07-07 15:25:48 · 301 阅读 · 0 评论 -
retrofit2.0 翻译
转载地址: http://blog.csdn.net/u014165119/article/details/49280779转载 2016-07-07 15:24:47 · 190 阅读 · 0 评论 -
retrofit请求直接返回string
1.添加gradle依赖: compile 'com.squareup.retrofit2:converter-scalars:2.0.0' 2.更换转换器 mRetrofit = new Retrofit.Builder() .baseUrl(HttpAddress.SITE) .addConverterFactory(Sca原创 2016-07-04 10:57:59 · 8020 阅读 · 3 评论 -
单个应用流量统计实现和核对
1.通过包名获得应用的Uid: try { PackageManager pm = getPackageManager(); ApplicationInfo ai = pm.getApplicationInfo("cn.com.wasu.main", PackageManager.GET_ACTIVITIES); WL原创 2015-10-10 15:56:15 · 541 阅读 · 0 评论 -
android logcat 关于内存回收的字段解释
内存调试 D/dalvikvm( 809 ): GC_CONCURRENT freed 如果在Linux下运行adb logcat命令,可以看到如下的输出: GC_EXTERNAL_ALLOC freed 297K, 49% free 3411K/6663K, external 24870K/26260K, paused 83ms 其中D/dalvikvm表示由dalv转载 2014-06-25 10:23:21 · 726 阅读 · 0 评论 -
android APK反编译
1.获得src中的java源代码:(说明:做了代码混淆的除外。) 需要用到的工具:dex2jar和JD-GUI,工具的下载,自己去搜网上有很多 (1)把需要反编译的APK用winRAR解压缩到一个文件夹, 或者修改APK后缀改成zip后缀后直接解压,解压完成后获得classes.dex文件。 用我们dex2jar下面的dex2jar.bat 转换成jar原创 2014-03-10 15:56:55 · 494 阅读 · 0 评论 -
如何解决4.0以后android UI线程执行网络耗时操作会报错
耗时在操作最好能放在一个新的线程中执行, 如果非要在UI线程中执行,可以在oncreate方法中执行如下代码: StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build()); S原创 2014-02-17 09:21:44 · 926 阅读 · 0 评论