首页 文章 精选 留言 我的

精选列表

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

Android 在线录制详解

MQC一直致力于帮助开发者快速发现和解决App质量问题,在线录制主要解决人工编写脚本效率低,成本高,兼容性差等等问题。 在线录制允许用户通过远程租用手机的方式,在线录制一些动作,录制的动作可以被自动转化为自动化脚本,并且可以在远程租用的手机上进行回放,大大节省了人力成本。 1、初始界面如下图所示,1为手机操作区域,操作方式与远程真机租用使用方式无异;2为刷新按钮,点击该按钮后,会重新解析当前界面的控件树;3为控件信息显示区域,可以显示当前鼠标所在控件的信息;4为上传应用按钮,点击后可以上传被测应用。 2、点击刷新按钮后,会进行控件解析,此时如果在录制状态,请不要录制任何动作,大概两秒左右,控件解析完毕。 3、解析屏幕完毕后,鼠标再次移到手机操作区域,鼠标所在位置的控件会被红色虚线框标出,同时,在控件信息显示区域会显示当前控件的信息 4、注意

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

Android Activity详解(一)

Activity生命周期图 在此之前,我们新建一个项目,代码非常简单,两个活动之间相互跳转(本来想做GIF图的,不会~~~~(>_<)~~~~) 主活动代码如下: public class MainActivity extends AppCompatActivity { private Button btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn = (Button) findViewById(R.id.btn); Log.i("MainActivity--->","onCreate"); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(MainActivity.this,SecondActivity.class)); } }); } @Override protected void onStart() { super.onStart(); Log.i("MainActivity--->","onStart"); } @Override protected void onResume() { super.onResume(); Log.i("MainActivity--->","onResume"); } @Override protected void onPause() { super.onPause(); Log.i("MainActivity--->","onPause"); } @Override protected void onStop() { super.onStop(); Log.i("MainActivity--->","onStop"); } @Override protected void onDestroy() { Log.i("MainActivity--->","onDestroy"); super.onDestroy(); } @Override protected void onRestart() { super.onRestart(); Log.i("MainActivity--->","onRestart"); } } 第二个页面代码相差无几,就补贴上了,节省版面。 1,点击应用,进入MainActivity I/MainActivity--->: onCreate(创建) I/MainActivity--->: onStart(开启,逻辑层面的可见状态) I/MainActivity--->: onResume(页面运行中) 2,跳转到SecondActivity页面 I/MainActivity--->: onPause(MainActivity由onResume切换到暂停状态) I/SecondActivity--->: onCreate(SecondActivity创建) I/SecondActivity--->: onStart(SecondActivity开启,逻辑层面的可见状态) I/SecondActivity--->: onResume(SecondActivity页面运行中) I/MainActivity--->: onStop(上一个页面进入停止状态) 3,返回到MainActivity页面 I/SecondActivity--->: onPause(SecondActivity由onResume切换到暂停状态) I/MainActivity--->: onRestart(方法在停止到运行状态之间调用) I/MainActivity--->: onStart I/MainActivity--->: onResume I/SecondActivity--->: onStop(SecondActivity页面停止) I/SecondActivity--->: onDestroy(SecondActivity页面被销毁) SecondActivity页面停止容易理解,但是SecondActivity页面被销毁是怎么回事呢?为什么MainActivity跳转到另一个页面仅仅只进入了onStop()状态却没有被onDestroy(),在这我们需要说明一个安卓的回退栈的问题。 图画的不好看,见谅 当然,活动生命周期的改变并不仅仅由跳转页面所决定,比如手机的配置比较低,高优先级的系统级应用需要内存就会把应用杀死,那毫无疑问 活动将由onResume——>onPause——>onStop——>onDestroy 最后一个特殊情况再测试点击手机HOME键: 绝大多数的教程内均写的是点击HOME键任务进入后台,活动onStop()被保存,但是我在真机测试时并不是这样 I/MainActivity--->: onPause I/MainActivity--->: onStop I/MainActivity--->: onDestroy 我的设备是魅族MX4,安卓5.1的系统,个人猜想可能是安卓版本不同所导致的,还望高手不吝赐教,谢谢。 未完待续.......

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

Android:随笔——取代findViewById

转载请标明地址 QuincySx: http://www.jianshu.com/p/0e9f1348a872 在安卓中最恶心的一条语句莫过于findViewById(),还好有ButterKnife等注入框架来帮我们解决这个问题,今天给大家介绍一个小技巧在不借助第三方框架的情况下来优雅的解决这个问题(此片文章字数比较短) 我们今天用泛型的方法来解决findViewById()麻烦的问题,代码特别简单直接上代码 private <T> T $(@IdRes int resid) { return (T) findViewById(resid); } 你没有看错就是这一句代码 其实在大家理解来看这样写就可以,但是呢由于只用到了T而没有声明,所以他会报错,所以就有了上文的写法 private T $(@IdRes int resid) { return (T) findViewById(resid); } 如果在类上加泛型就可以这样写了 public abstract class ColorfulActivity<T>{ private T $(@IdRes int resid) { return (T) findViewById(resid); } } 如果这样写的话就没有任何问题了,还是推荐最上边的写法 简单明了 用法 下面在说一下用法 TextView textView=$(R.id.text); EditText editText=$(R.id.edit); 总结 这样简洁的语法,没有复杂的转型看着简洁吧

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

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

Rocky Linux

Rocky Linux

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

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册