美文网首页
知识点梳理6 散碎点

知识点梳理6 散碎点

作者: 48d1753082c0 | 来源:发表于2018-07-29 11:12 被阅读8次

Android 散碎知识点


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

结果:

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

软键盘其实是一个Dialog
InputMethodService
windowSoftInputMode

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

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

lamdba 表达式如下:
android:text="@{@string/nameFormat(firstName, lastName)}"

// 空格符 &#160

启动权限设置页代码:

 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 的设置页了

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.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");

<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"/>

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

<uses-permission android:name="android.permission.RESTART_PACKAGES"/>

需 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();
} 

<uses-permission android:name="android.permission.FORCE_STOP_PACKAGES" />

相关文章

  • 知识点梳理6 散碎点

    Android 散碎知识点 Android 的小块的知识点是太多,太复杂了 常用abd命令 android开发在 ...

  • 读书分享

    【一】知识点梳理:3个知识点 【二】读书分享:《成功,动机与目标》 【一】知识点梳理: 1、可转债上市当天怎么停牌...

  • SpringMVC 的相关知识梳理

    1. SpringMVC的知识脉络 SpringMVC知识点梳理SpringMVC知识点梳理 官网网址:http...

  • 知识点梳理

    html&css 浏览器内核差异 移动端的点击事件的有延迟,时间是多久,为什么会有? 怎么解决这个延时?(clic...

  • 知识点梳理

    1.ECMAScript和javaScript的关系 可简单概括为:ECMAScript是JavaScript的规...

  • 知识点梳理

    小数的意义和性质是小学数学中非常重要的内容, 本周学习了以下知识点: 一、小数的意义 小数是十进制分数的另外一种表...

  • 梳理知识点

    【晚上好#清风徐来#20201101日精进第38天】 周末,宅在家。把单元试卷和综合试卷做了一遍。再在电脑上整理出...

  • 12组➕14号➕大老爷 第二十课作业 #裂变增长实验室#

    今日作业:梳理依然不会的知识点,找组员找组长找老师解决,写结果 关于梳理不会的知识点,我觉得我不会的知识点太多了,...

  • ES6的知识点梳理

    ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准。 let 和 const在ES6...

  • 2018-11-28

    一、做了啥 01app内容知识点(生涯小组)梳理会议:梳理主干知识点内容 02微信选题收集、上传 03...

网友评论

      本文标题:知识点梳理6 散碎点

      本文链接:https://www.haomeiwen.com/subject/jdtzmftx.html