Android 散碎知识点


Android 的小块的知识点是太多,太复杂了

  • 常用abd命令
  • android开发在 MAC 上的各种配置
  • android多语言适配
  • android设备的id

结果:

单卡时,使用电信卡,不管是卡槽几,getDeviceId()获取的都是 MEID 号
单卡时,使用移动卡,getDeviceId()获取的是对应的卡槽的 IMEI号
双卡时,使用电信卡,不管是主卡设在卡槽几,getDeviceId()获取的都是 MEID 号
双卡时,使用移动卡,getDeviceId()获取的都是卡槽1的 IMEI号
图太多了,我就不贴了,大家注意,getDeviceId()获取的设备 id,并不是不变的,并且有的手机和系统,据说获取不到值,或是获取到的是0等无意义的数值。

  • android中软键盘的交互

软键盘其实是一个Dialog
InputMethodService
windowSoftInputMode

android:windowSoftInputMode的属性设置必须是下面中的一个值,或一个”state”值加一个”adjust”值的组合,各个值之间用 | 分开。

stateUnspecified-未指定状态:当我们没有设置android:windowSoftInputMode属性的时候,软件默认采用的就是这种交互方式,系统会根据界面采取相应的软键盘的显示模式。stateUnchanged-不改变状态:当前界面的软键盘状态,取决于上一个界面的软键盘状态,无论是隐藏还是显示。stateHidden-隐藏状态:当设置该状态时,软键盘总是被隐藏,不管是否有输入的需求。stateAlwaysHidden-总是隐藏状态:当设置该状态时,软键盘总是被隐藏,和stateHidden不同的是,当我们跳转到下个界面,如果下个页面的软键盘是显示的,而我们再次回来的时候,软键盘就会隐藏起来。stateVisible-可见状态:当设置为这个状态时,软键盘总是可见的,即使在界面上没有输入框的情况下也可以强制弹出来出来。stateAlwaysVisible-总是显示状态:当设置为这个状态时,软键盘总是可见的,和stateVisible不同的是,当我们跳转到下个界面,如果下个页面软键盘是隐藏的,而我们再次回来的时候,软键盘就会显示出来。adjustUnspecified-未指定模式:设置软键盘与软件的显示内容之间的显示关系。当你跟我们没有设置这个值的时候,这个选项也是默认的设置模式。在这中情况下,系统会根据界面选择不同的模式。adjustResize-调整模式:该模式下窗口总是调整屏幕的大小用以保证软键盘的显示空间;这个选项不能和adjustPan同时使用,如果这两个属性都没有被设置,系统会根据窗口中的布局自动选择其中一个。adjustPan-默认模式:该模式下通过不会调整来保证软键盘的空间,而是采取了另外一种策略,系统会通过布局的移动,来保证用户要进行输入的输入框肯定在用户的视野范围里面,从而让用户可以看到自己输入的内容。
  • android中字符串使用技巧汇总
Hello %1$s %2$s, %3$d agesgetString(R.string.nameFormatWithAge, "a", "b", 3);lamdba 表达式如下:android:text="@{@string/nameFormat(firstName, lastName)}"// 空格符  
  • Android action 应用记录

启动权限设置页代码:

 private void startAppSettingActivity(Activity activity) {        Intent intent = new Intent();           intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);        intent.setData(Uri.parse("package:" + activity.getPackageName()));        intent.addCategory(Intent.CATEGORY_DEFAULT);        intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);        intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);        activity.startActivityForResult(intent, 200);    }

注意不要加这个 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) ,要不从系统权限设置页回来时会出现闪屏的问题。

在 setData 中添加目标 app 的包名就能定位到这个 app 的设置页了

  • 记录android开发中琐碎的点

canves 绘制点九图被拉伸,点九不起作用

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bubble);NinePatch ninePatch = new NinePatch(bitmap, bitmap.getNinePatchChunk(), null);RectF rectF = new RectF(l, t, r, b);ninePatch.draw(canvas, rectF);
image.png

ScrollView 嵌套 RecyclerView 惯性滑动失败

这个问题基本上每个人都会碰到,解决的方式有很多,但是核心的原理就是让RecyclerView不滑动,因为RecyclerView是强制父控件把点击事件传递给他的。

image.png

避免重复吐司 ( Toast ) 时,显示时间过长

public void showToast(Context context, String text, boolean isLongLength) {    int length;    if (isLongLength) {        length = Toast.LENGTH_LONG;    } else {                 length = Toast.LENGTH_SHORT;    }    if (toast == null) {        toast = Toast.makeText(context, text, length);    } else {        toast.setText(text);        toast.setDuration(length);    }    toast.show();}
  • android几种杀进程的方式

根据进程名称杀进程

android.os.Process.killProcess(android.os.Process.myPid());

当进程在前台时,会杀死现有进程,然后再重新启动改线程,类似于手机的重启。但是只要我们把 app home 键切到后台,再杀进程就不会重启进程了,这里适合我的需求,当 app 进程处于后台进程并切在回收列表中部时,自己杀死自己,放置系统杀死集成回收,再次启动进程时 activity 栈缓存的问题

用 java api 退出当前线程

System.exit(0);

和上面面临同一个问题,进程在前台时,杀完进程会重启进程

杀别的进程,单杀不死自己
有杀死和重启进程2种,都需要相关权限

ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);activityManager.killBackgroundProcesses("com.zhang.wei");ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);activityManager.restartPackage("com.zhangwei");

需 root 权限

try {    ActivityManager am =(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);    Method method = Class.forName("android.app.ActivityManager").getMethod("forceStopPackage",String.class);    method.invoke(am,pkgName);} catch (Exception e) {    e.printStackTrace();} 

更多相关文章

  1. Android中native进程内存泄露的调试技巧
  2. Android(安卓)安全机制(1)uid 、 gid 与 pid
  3. Android电源管理
  4. Android(安卓)adb 我的常用调试命令记录(持续更新中...)
  5. Android软键盘处理开发规范
  6. [置顶] Android启动过程的深入研究
  7. Xamarin android沉浸式状态栏
  8. 分析点击android桌面app图标启动应用程序的过程
  9. android 基础

随机推荐

  1. android实现抖动效果
  2. android中的style部分属性值介绍
  3. Android抖动的动画效果
  4. 可点击价格走势图-贝塞尔曲线
  5. android 隐藏标题栏
  6. Android实际分辨率(android:anyDensity="
  7. 如何将Activity设置为Dialog样式
  8. Android之记录ListView的checkbox选择位
  9. android 内存优化 性能优化
  10. android之 JNI端获取并操作Surface