首页 文章 精选 留言 我的

精选列表

搜索[android studio],共10000篇文章
优秀的个人博客,低调大师

Android之父即将公布自制新手机,将在月底发布

安卓系统的创始人Andy Rubin早前宣布打造自己的手机品牌Essential,现在月底即将发布问世。 早前,安卓系统之父Andy Rubin宣布自己旗下的公司Essential将打造一款安卓智能手机,这可以说是安卓之父自己的品牌了。现在,他的品牌将在月底发布。 两个月前,Rubin在社交网络上发布了一张手握着手机的照片,很有可能就是Essential手机的真身。从当时的照片中,我们可以看到手机的边框很窄,而显示屏的边角是弧形的,类似三星Galaxy S8和LG G6。 事实上,Essential开发了至少一款设备的原型,它的设计中使用了金属边框和陶瓷背面,该公司同时也在开发能为电池充电且能扩展手机功能的连接器。这种坚持使用模块化智能手机的概念,除了摩托罗拉公司,大概也只有Essential了。 最近,Rubin还公布了Essential正在开展的其他项目,比如关于360度相机的测试。Essential的官方Twitter消息显示,确实将为其即将推出的智能手机准备了360度相机,从曝光的图片看,看起来非常像一个镜头。 作为一家平台公司,Essential的目标是将自家多款设备捆绑在一起,除了移动产品,它们还会推出智能家居产品。当然,这套系统核心的依然是Rubin最擅长的智能手机领域。 原文发布时间: 2017-05-26 14:19 本文作者: 星星 本文来自云栖社区合作伙伴镁客网,了解相关信息可以关注镁客网。

优秀的个人博客,低调大师

Android资源strings.xml中特殊符号对应表

终于建了一个自己个人小站:https://huangtianyu.gitee.io,以后优先更新小站博客,欢迎进站,O(∩_∩)O~~ 项目中要在string.xml 中显示特殊符号、如@号冒号等、直接写肯定不行啦 只能考虑使用ASCII码进行显示、在XML中空格符不是用HMTL中的表示、而是用编码表示 以下为常见的ASCII十进制交换编码:&#064; 对应 -----@-----&#058; 对应 -----:-----&#160; 对应 -----空格-----&#032; 对应 -----空格-----&#033; 对应 -----!-----&#034; 对应 -----"(xml中需要在前面加入)-----&#035; 对应 -----#-----&#036; 对应 -----$-----&#037; 对应 -----%-----&#038; 对应 -----&-----&#039; 对应 -----´-----&#040; 对应 -----(-----&#041; 对应 -----)-----&#042; 对应 -----*-----&#043; 对应 -----+-----&#044; 对应 -----,-----&#045; 对应 -----------&#046; 对应 -----.-----&#047; 对应 -----/-----&#058; 对应 -----:-----&#059; 对应 -----;-----&#060; 对应 -----<-----&#061; 对应 -----=-----&#062; 对应 ----->-----&#063; 对应 -----?-----&#064; 对应 -----@-----&#091; 对应 -----[-----&#092; 对应 -------&#093; 对应 -----]-----&#094; 对应 -----^-----&#095; 对应 -----_-----&#096; 对应 -----`-----&#123; 对应 -----{-----&#124; 对应 -----|-----&#125; 对应 -----}-----&#126; 对应 -----~-----&#160; 对应 -----(这边是空格,在xml首字符中不会被忽略)-----&#161; 对应 -----¡-----&#162; 对应 -----¢-----&#163; 对应 -----£-----&#164; 对应 -----¤-----&#165; 对应 -----¥-----&#166; 对应 -----¦-----&#167; 对应 -----§-----&#168; 对应 -----¨-----&#169; 对应 -----©-----&#170; 对应 -----ª-----&#171; 对应 -----«-----&#172; 对应 -----¬-----&#173; 对应 -----­-----&#174; 对应 -----®-----&#175; 对应 -----¯-----&#176; 对应 -----°-----&#177; 对应 -----±-----&#178; 对应 -----²-----&#179; 对应 -----³-----&#180; 对应 -----´-----&#181; 对应 -----µ-----&#182; 对应 -----¶-----&#183; 对应 -----•-----&#184; 对应 -----¸-----&#185; 对应 -----¹-----&#186; 对应 -----º-----&#187; 对应 -----»-----&#188; 对应 -----¼-----&#189; 对应 -----½-----&#190; 对应 -----¾-----&#191; 对应 -----¿-----&#192; 对应 -----À-----&#193; 对应 -----Á-----&#194; 对应 -----Â-----&#195; 对应 -----Ã-----&#196; 对应 -----Ä-----&#197; 对应 -----Å-----&#198; 对应 -----Æ-----&#199; 对应 -----Ç-----&#200; 对应 -----È-----&#201; 对应 -----É-----&#202; 对应 -----Ê-----&#203; 对应 -----Ë-----&#204; 对应 -----Ì-----&#205; 对应 -----Í-----&#206; 对应 -----Î-----&#207; 对应 -----Ï-----&#208; 对应 -----Ð-----&#209; 对应 -----Ñ-----&#210; 对应 -----Ò-----&#211; 对应 -----Ó-----&#212; 对应 -----Ô-----&#213; 对应 -----Õ-----&#214; 对应 -----Ö-----&#215; 对应 -----×-----&#216; 对应 -----Ø-----&#217; 对应 -----Ù-----&#218; 对应 -----Ú-----&#219; 对应 -----Û-----&#220; 对应 -----Ü-----&#221; 对应 -----Ý-----&#222; 对应 -----Þ-----&#223; 对应 -----ß-----&#224; 对应 -----à-----&#225; 对应 -----á-----&#226; 对应 -----â-----&#227; 对应 -----ã-----&#228; 对应 -----ä-----&#229; 对应 -----å-----&#230; 对应 -----æ-----&#231; 对应 -----ç-----&#232; 对应 -----è-----&#233; 对应 -----é-----&#234; 对应 -----ê-----&#235; 对应 -----ë-----&#236; 对应 -----ì-----&#237; 对应 -----í-----&#238; 对应 -----î-----&#239; 对应 -----ï-----&#240; 对应 -----ð-----&#241; 对应 -----ñ-----&#242; 对应 -----ò-----&#243; 对应 -----ó-----&#244; 对应 -----ô-----&#245; 对应 -----õ-----&#246; 对应 -----ö-----&#247; 对应 -----÷-----&#248; 对应 -----ø-----&#249; 对应 -----ù-----&#250; 对应 -----ú-----&#251; 对应 -----û-----&#252; 对应 -----ü-----&#253; 对应 -----ý-----&#254; 对应 -----þ-----&#255; 对应 -----ÿ-----&#256; 对应 -----Ā-----&#257; 对应 -----ā-----&#258; 对应 -----Ă-----&#259; 对应 -----ă-----&#260; 对应 -----Ą-----&#261; 对应 -----ą-----&#262; 对应 -----Ć-----&#263; 对应 -----ć-----&#264; 对应 -----Ĉ-----&#265; 对应 -----ĉ-----&#266; 对应 -----Ċ-----&#267; 对应 -----ċ-----&#268; 对应 -----Č-----&#269; 对应 -----č-----&#270; 对应 -----Ď-----&#271; 对应 -----ď-----&#272; 对应 -----Đ-----&#273; 对应 -----đ-----&#274; 对应 -----Ē-----&#275; 对应 -----ē-----&#276; 对应 -----Ĕ-----&#277; 对应 -----ĕ-----&#278; 对应 -----Ė-----&#279; 对应 -----ė-----&#280; 对应 -----Ę-----&#281; 对应 -----ę-----&#282; 对应 -----Ě-----&#283; 对应 -----ě-----&#284; 对应 -----Ĝ-----&#285; 对应 -----ĝ-----&#286; 对应 -----Ğ-----&#287; 对应 -----ğ-----&#288; 对应 -----Ġ-----&#289; 对应 -----ġ-----&#290; 对应 -----Ģ-----&#291; 对应 -----ģ-----&#292; 对应 -----Ĥ-----&#293; 对应 -----ĥ-----&#294; 对应 -----Ħ-----&#295; 对应 -----ħ-----&#296; 对应 -----Ĩ-----&#297; 对应 -----ĩ-----&#298; 对应 -----Ī-----&#299; 对应 -----ī-----&#300; 对应 -----Ĭ-----&#301; 对应 -----ĭ-----&#302; 对应 -----Į-----&#303; 对应 -----į-----&#304; 对应 -----İ-----&#305; 对应 -----ı-----&#306; 对应 -----IJ-----&#307; 对应 -----ij-----&#308; 对应 -----Ĵ-----&#309; 对应 -----ĵ-----&#310; 对应 -----Ķ-----&#311; 对应 -----ķ-----&#312; 对应 -----ĸ-----&#313; 对应 -----Ĺ-----&#314; 对应 -----ĺ-----&#315; 对应 -----Ļ-----&#316; 对应 -----ļ-----&#317; 对应 -----Ľ-----&#318; 对应 -----ľ-----&#319; 对应 -----Ŀ-----&#320; 对应 -----ŀ-----&#321; 对应 -----Ł-----&#322; 对应 -----ł-----&#323; 对应 -----Ń-----&#324; 对应 -----ń-----&#325; 对应 -----Ņ-----&#326; 对应 -----ņ-----&#327; 对应 -----Ň-----&#328; 对应 -----ň-----&#329; 对应 -----ʼn-----&#330; 对应 -----Ŋ-----&#331; 对应 -----ŋ-----&#332; 对应 -----Ō-----&#333; 对应 -----ō-----&#334; 对应 -----Ŏ-----&#335; 对应 -----ŏ-----&#336; 对应 -----Ő-----&#337; 对应 -----ő-----&#338; 对应 -----Œ-----&#339; 对应 -----œ-----&#340; 对应 -----Ŕ-----&#341; 对应 -----ŕ-----&#342; 对应 -----Ŗ-----&#343; 对应 -----ŗ-----&#344; 对应 -----Ř-----&#345; 对应 -----ř-----&#346; 对应 -----Ś-----&#347; 对应 -----ś-----&#348; 对应 -----Ŝ-----&#349; 对应 -----ŝ-----&#350; 对应 -----Ş-----&#351; 对应 -----ş-----&#352; 对应 -----Š-----&#353; 对应 -----š-----&#354; 对应 -----Ţ-----&#355; 对应 -----ţ-----&#356; 对应 -----Ť-----&#357; 对应 -----ť-----&#358; 对应 -----Ŧ-----&#359; 对应 -----ŧ-----&#360; 对应 -----Ũ-----&#361; 对应 -----ũ-----&#362; 对应 -----Ū-----&#363; 对应 -----ū-----&#364; 对应 -----Ŭ-----&#365; 对应 -----ŭ-----&#366; 对应 -----Ů-----&#367; 对应 -----ů-----&#368; 对应 -----Ű-----&#369; 对应 -----ű-----&#370; 对应 -----Ų-----&#371; 对应 -----ų-----&#372; 对应 -----Ŵ-----&#373; 对应 -----ŵ-----&#374; 对应 -----Ŷ-----&#375; 对应 -----ŷ-----&#376; 对应 -----Ÿ-----&#377; 对应 -----Ź-----&#378; 对应 -----ź-----&#379; 对应 -----Ż-----&#380; 对应 -----ż-----&#381; 对应 -----Ž-----&#382; 对应 -----ž-----

优秀的个人博客,低调大师

Android NDK开发系列教程4:对类变量进行操作

终于建了一个自己个人小站:https://huangtianyu.gitee.io,以后优先更新小站博客,欢迎进站,O(∩_∩)O~~ 通常我们也可以直接利用jni来访问和处理类的变量,不一定非要通过Java方法来操作Java类变量。对类变量操作时,类的静态变量和类的实例变量的操作稍微有些不同,下面进行讲解。 对类的静态变量进行操作 类的静态变量属于类,是所有该类实例共享的。操作该变量时,不需要指定具体的实例是哪个。 jclass clazz; jfieldID fid; jint num; //1.获取类的Class引用 clazz = env->FindClass("zqc/com/example/Person"); if (clazz == 0) { // 错误处理 return; } //2.获取类静态变量num的属性ID fid = env->GetStaticFieldID( clazz, "num", "I"); if (fid == 0) { return; } // 3.获取静态变量num的值 num = env->GetStaticIntField(clazz,fid); printf("In C--->ClassField.num = %d\n", num); // 4.修改静态变量num的值 env->SetStaticIntField(clazz, fid, 80); 主要步骤就是代码里面注释的。 对类的实例变量进行操作 代码如下: jclass clazz; jfieldID fid; jstring j_str; jstring j_newStr; const char *c_str = NULL; // 1.获取类的Class引用,obj是该类的某个实例jobject obj; clazz = env->GetObjectClass(obj); if (clazz == NULL) { return; } // 2. 获取类实例变量str的属性ID fid = env->GetFieldID(clazz,"str", "Ljava/lang/String;"); if (clazz == NULL) { return; } // 3. 获取实例变量str的值 j_str = (jstring)env->GetObjectField(obj,fid); // 4. 将unicode编码的java字符串转换成C风格字符串 c_str = env->GetStringUTFChars(j_str,NULL); if (c_str == NULL) { return; } printf("In C--->ClassField.str = %s\n", c_str); env->ReleaseStringUTFChars(j_str, c_str); // 5. 修改实例变量str的值 j_newStr = env->NewStringUTF("This is C String"); if (j_newStr == NULL) { return; } env->SetObjectField(obj, fid, j_newStr); // 6.删除局部引用 env->DeleteLocalRef(clazz); env->DeleteLocalRef(j_str); env->DeleteLocalRef(j_newStr); JNI开发也有JNI开发的套路,按照上面套路来,即可修改类的实例变量。操作过程也很好理解,我们在native操作的时候都需要借助JNI提供的函数获取相应的引用。利用引用去进行操作。由于JNI函数是直接操作JVM中的数据结构,所以即使是private的变量,我们也可以进行修改。 总结 由于JNI函数是直接操作JVM中的数据结构,不受Java访问修饰符的限制。即,在本地代码中可以调用JNI函数可以访问Java对象中的非public属性和方法 访问和修改静态变量操作步聚: 调用FindClass函数获取类的Class引用 调用GetStaticFieldID函数获取Class引用中某个静态变量ID 调用GetStaticXXXField函数获取静态变量的值,需要传入变量所属Class的引用和变量ID 调用SetStaticXXXField函数设置静态变量的值,需要传入变量所属Class的引用、变量ID和变量的值 访问和修改实例变量操作步聚: 调用GetObjectClass函数获取实例对象的Class引用 调用GetFieldID函数获取Class引用中某个实例变量的ID 调用GetXXXField函数获取变量的值,需要传入实例变量所属对象和变量ID 调用SetXXXField函数修改变量的值,需要传入实例变量所属对象、变量ID和变量的值

优秀的个人博客,低调大师

Android--Handler的内存泄漏原因及解决方法

版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/79024700 一、如何造成内存泄漏: 1、主线程的Looper对象会伴随该应用程序的整个生命周期 2、Java里,非静态内部类和匿名类都会潜在引用它们所属的外部类 发送的延迟空消息(EmptyMessageDelayed)后、消息处理被前,该消息会一直保存在主线程的消息队列里持续时间,在持续时间里,该消息内部持有对handler的引用,由于handler属于非静态内部类,所以又持有对其外部类(即MainActivity实例)的潜在引用,引用关系如下图 这条引用关系会一直保持直到消息得到处理,从而,这阻止了MainActivity被垃圾回收器(GC)回收,同时造成应用程序的内存泄漏,如下图: 二、解决方法 1、使用静态内部类+弱引用 在Java里,非静态内部类和匿名类都会潜在的引用它们所属的外部类。但是,静态内部类不会。所以,避免内存泄漏的解决方案是:只需要将Handler的子类设置成静态内部类;同时,还可以加上使用WeakReference弱引用持有Activity实例。 原因:弱引用的对象拥有短暂的生命周期。在垃圾回收器线程扫描时,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。 public class MainActivity extends AppCompatActivity { //将Handler改成静态内部类 private static class FHandler extends Handler{ //定义弱引用实例 private WeakReference<Activity> reference; //在构造方法中传入需要持有的Activity实例 public MyHandler(Activity activity) { reference = new WeakReference<Activity>(activity); } //通过复写handlerMessage()从而决定如何进行更新UI操作 @Override public void handleMessage(Message msg) { //省略代码 } } @Override protected void onCreate(Bundle savedInstanceState) { //主线程创建时便自动创建Looper和对应的MessageQueue,之前执行Loop()进入消息循环 super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //实例化Handler的子类 //这里并无指定Looper,即自动绑定当前线程(主线程)的Looper和MessageQueue private final Handler showhandler = new FHandler(); //启动子线程 new Thread(){ @Override public void run() { super.run(); try { Thread.sleep(10000); } catch (InterruptedException e) { e.printStackTrace(); showhandler.sendEmptyMessageDelayed(0x1,10000); } } }.start(); } 2、 当外部类结束生命周期时清空消息队列 内存泄漏的原因是:当Activity结束生命周期时,Handler里的Message可能还没处理完,从而导致一系列的引用关系。其实,我们只要在当Activity结束生命周期时清除掉消息队列(MessageQueue)里的所有Message,那么这一系列引用关系就不会存在,就能防止内存泄漏。 解决方案:当Activity结束生命周期时(调用onDestroy()方法),同时清除消息队列里的所有回调消息(调用removeCallbacksAndMessages(null))。 @Override protected void onDestroy() { super.onDestroy(); mHandler.removeCallbacksAndMessages(null); }

优秀的个人博客,低调大师

Android应用开发—PendingIntent:如何判断两个PendingIntent对等

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/voidreturn/article/details/78995910 摘录自:PendingIntent详解 如何判断两个PendingIntent对等: 两个PendingIntent对等是指它们的operation一样, 且其它们的Intent的action, data, categories, components和flags都一样。但是它们的Intent的Extra可以不一样。 主要常量 FLAG_CANCEL_CURRENT:如果当前系统中已经存在一个相同的PendingIntent对象,那么就将先将已有的PendingIntent取消,然后重新生成一个PendingIntent对象。 FLAG_NO_CREATE:如果当前系统中不存在相同的PendingIntent对象,系统将不会创建该PendingIntent对象而是直接返回null。 FLAG_ONE_SHOT:该PendingIntent只作用一次。在该PendingIntent对象通过send()方法触发过后,PendingIntent将自动调用cancel()进行销毁,那么如果你再调用send()方法的话,系统将会返回一个SendIntentException。 FLAG_UPDATE_CURRENT:如果系统中有一个和你描述的PendingIntent对等的PendingInent,那么系统将使用该PendingIntent对象,但是会使用新的Intent来更新之前PendingIntent中的Intent对象数据,例如更新Intent中的Extras。

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册