Android个人学习小结2016.9

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/forgot2015/article/details/52683774

仅个人学习小结,部分内容摘自网络,如有侵权,请联系删除,不便之处,敬请原谅

1、handler.removeCallbacks(r); removeCallbacks方法是删除指定的Runnable对象,使线程对象停止运行

2、
.gitignore无效,不能过滤某些文件的情况。
这是因为”这些文件”已经添加到git目录了,无法再添加到.gitignore,为了解决这问题,只能把git目录先清空,输入以下命令:

git rm -r --cached .

然后再提交.gitignore文件就能生效了

3、dalvikvm: GC_FOR_ALLOC freed 900K, 40% free 4641K/7644K, paused 18ms, total 19ms
//出现以上提示 是因为系统正在回收内存
garbage collection 内存回收 GC

4、内存溢出 例子
堆溢出:

public class Heap
{
    public static void main(String[] args)
    {
        ArrayList list=new ArrayList();
        while(true)
        {
            list.add(new Heap());
        }
    }
}

报错:
java.lang.OutOfMemoryError: Java heap space

栈溢出:
复制代码 代码如下:

public class Stack
{
    public static void main(String[] args)
    {
        new Stack().test();
    }
    public void test()
    {
        test();
    }
}

报错:
java.lang.StackOverflowError

5、android studio failed to resolve jcenter库名
解决办法,以下表示允许到该站点下载仓库
allprojects {
repositories {
jcenter()
mavenCentral()
}
}

buildscript {
repositories {
jcenter()
mavenCentral()
}

6、LeakCanary 内存泄漏分析框架
资源性对象比如(Cursor,File文件等)往往都用了一些缓冲,我们在不使用的时候,应该及时关闭它们,以便它们的缓冲及时回收内存。它们的缓冲不 仅存在于 java虚拟机内,还存在于java虚拟机外。如果我们仅仅是把它的引用设置为null,而不关闭它们,往往会造成内存泄漏。

7、怎么设置IP让电脑只能上内网不能上外网
设置IP时不设网关就可以了
如以下设置,则只能连内网,不能连外网
这里写图片描述

8、小布尔乔亚、克莱因瓶、皮亚诺曲线、莫比乌斯环、 康托尔集、狄利克雷函数、莱洛三角形

9、java,exe是java虚拟机
javadoc.exe用来制作java文档
jdb.exe是java的调试器
javaprof,exe是剖析工具

10、运行cmd

输入 ipconfig /displaydns 查看本地缓存的DNS信息
输入 ipconfig /flushdns 清除本地缓存的DNS信息

11、实现全屏效果

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,  WindowManager.LayoutParams.FLAG_FULLSCREEN);

实现无标题栏

requestWindowFeature(Window.FEATURE_NO_TITLE);

关于隐藏底下导航栏,要在setContentView之前使用
SYSTEM_UI_FLAG_VISIBLE 导航栏显示
SYSTEM_UI_FLAG_LOW_PROFILE 导航栏隐藏
SYSTEM_UI_FLAG_HIDE_NAVIGATION 导航栏完全隐藏(触摸屏幕就会出现,通常用于视频播放器)
例子

Window window;
 window = getWindow();
        WindowManager.LayoutParams params = window.getAttributes();
        params.systemUiVisibility = View.SYSTEM_UI_FLAG_LOW_PROFILE;
        window.setAttributes(params);
        setContentView(R.layout.main);

12、处理完一个activity 想要按返回键不会back回去,只需要跳转到下一个时 先finish()了

13、activity的主题很重要,有时候用的demo 导入后发现样式 字体等变了,很可能就是因为新工程用的不是demo中的主题

14、android theme和style的区别
theme一般是整个activity的样式,而style一般是一个小部件的样式,如textView,listView等
如果theme跟style样式有冲突,一般是style样式优先级高,就近原则
android:style引用theme.xml文件 而style引用style.xml

15、static修饰的变量我们称之为静态变量,没有用static修饰的变量称之为实例变量,他们两者的区别是:
静态变量是随着类加载时被完成初始化的,它在内存中仅有一个,且JVM也只会为它分配一次内存,同时类所有的实例都共享静态变量,可以直接通过类名来访问它。

16、static修饰的方法我们称之为静态方法,我们通过类名对其进行直接调用。由于他在类加载的时候就存在了,它不依赖于任何实例,所以static方法必须实现,也就是说他不能是抽象方法abstract。
static方法是类中的一种特殊方法,我们只有在真正需要他们的时候才会将方法声明为static。如Math类的所有方法都是静态static的。

17、获取string.xml文件里面的值有几个不同的地方。
1.在AndroidManifest.xml与layout等xml文件里:
android:text=”@string/resource_name”

2.在activity里:
方法一:this.getString(R.string.resource_name);
方法二:getResources().getString(R.string.resource_name);

3.在其他java文件(必须有Context或application)
方法一: context.getString(R.string.resource_name);
方法二: application.getString(R.string.resource_name);

18、String s = “abcabcabc”;//你的串
s=s.replace(“”, “-“); //每个字符加个-
String b[]=s.split(“-“);//截取字符串为数组

19、如果你想禁止Android不跟随屏幕密度加载不同文件夹的资源,只需在AndroidManifest.xml文件中添加android:anyDensity=”false”字段即可!

20、
animator:存放属性( 逐帧 )动画的XML文件
anim:存放补间动画的XML文件
demens.xml:定义尺寸资源
string.xml:定义字符串资源
styles.xml:定义样式资源
colors.xml:定义颜色资源
arrays.xml:定义数组资源
attrs.xml:自定义控件时用的较多,自定义控件的属性!

21、读取assets文件夹中的txt文档
tv.setTextColor(Color.BLACK);

    tv.setTextSize(25.0f);

    tv.setText(getFromAssets("test.txt"));





public String getFromAssets(String fileName) {

    String text = "";

    try {

        InputStream is = getAssets().open(fileName);

        text = readTextFromSDcard(is);

// tv.setText(text);

    } catch (Exception e) {

        // TODO Auto-generated catch block

        e.printStackTrace();

    }

    return text;

}


private String readTextFromSDcard(InputStream is) throws Exception {
    InputStreamReader reader = new InputStreamReader(is,"UTF8");
    BufferedReader bufferedReader = new BufferedReader(reader);

    StringBuffer buffer = new StringBuffer("");

    String str;

    while ((str = bufferedReader.readLine()) != null) {

        buffer.append(str);

        buffer.append("\n");

    }

    return buffer.toString();
}

注意,要先把txt文件 另存为utf8格式
PS:assets文件夹中的文件,在打包成apk时,会压缩到原来的1/3左右

22、Android里的图形界面都是由View和ViewGroup以及他们的子类构成的: View:所有可视化控件的父类,提供组件描绘和时间处理方法 ViewGroup: View类的子类,可以拥有子控件,可以看作是容器 Android UI中的控件都是按照这种层次树的结构堆叠得,而创建UI布局的方式有两种, 自己在Java里写代码或者通过XML定义布局,后者显得更加方便和容易理解! 也是我们最常用的手段!另外我们一般很少直接用View和ViewGroup来写布局,更多的 时候使用它们的子类控件或容器来构建布局!

View和ViewGroup,平时我们是不会直接用的,一般是自定义View的时候 才会使用这两个东西!

23、关于网络请求,一般查询的时候我们用GET,数据增删改的时候用POST!!

24、读取文件资源:

res/raw:

InputStream is =getResources().openRawResource(R.raw.filename);

25、adb shell然后输入
getprop | grep dalvik.vm.heapgrowthlimit
查看当前设备支持的最大虚拟机内存,超过此 则会OOM

26、 注意1:Google的Android系统处理Assert有个bug,在AssertManager中不能处理单个超过1MB的文件,不然会报异常,raw没这个限制可以放个4MB的Mp3文件没问题。
注意2:assets 文件夹是存放不进行编译加工的原生文件,即该文件夹里面的文件不会像 xml, java 文件被预编译,可以存放一些图片,html,js, css 等文件。

27、一个 Android 工程最后变成 apk 包大概要做这么几件事儿:

* 1、生成 R.java 文件
* 2、将 .java 文件编译成 .class 文件
* 3、将 .class 文件打包成 .jar 文件
* 4、将所有 .jar 文件(包括依赖库)编译成 classes.dex 文件
* 5、将 assets 和 res 文件夹中所有的资源文件打包成一个 apk 包
* 6、将 classes.dex 文件添加进 apk 包
* 7、如果有使用 NDK 技术的话,将生成的 .so 文件添加进 apk 包
* 8、对 apk 包进行签名



28、Markdown可用&nbsp;&emsp;来实现缩进,用<br />来实现换行

29、有时候不是edittext没有光标,可能是光标默认白色,那么在白色背景下就看不到了
方法一、
EditText有一个属性:android:textCursorDrawable,这个属性是用来控制光标颜色的
android:textCursorDrawable=”@null”,”@null”作用是让光标颜色和text color一样

方法二、
在资源文件drawable下新建一个光标控制color_cursor.xml

<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <size android:width="1dp" />
    <solid android:color="#008000"  /></shape>

设置EditText:android:textCursorDrawable=”@drawable/color_cursor”

30、android 定义颜色color时6位或8位值的区别

  • 6位(#000000)就是RGB值(红绿蓝各自0~255,转换为16进制后,各对应前两位数,0~f)
  • 8位(#1e000000)头两位是透明度,后6位是RGB值,00是完全透明,ff是完全不透明,比较适中的透明度值是 1e 3e 4e

关于res目录下的color文件夹,和values下的colors.xml文件
两个都可以在xml布局文件的color属性中引用,如android:textColor=”color/black”
android:textColor=”color/black_blue”
一个是用作指定颜色,另一个用来做点击等操作的变色效果

31、什么是ANR 如何避免它?
答:ANR:Application Not Responding。在Android中,活动管理器和窗口管理器这两个系统服务负责监视应用程序的响应,当用户操作的在5s内应用程序没能做出反应,BroadcastReceiver在10秒内没有执行完毕,就会出现应用程序无响应对话框,这既是ANR。
避免方法:Activity应该在它的关键生命周期方法(如onCreate()和onResume())里尽可能少的去做创建操作。潜在的耗时操作,例如网络或数据库操作,或者高耗时的计算如改变位图尺寸,应该在子线程里(或者异步方式)来完成。主线程应该为子线程提供一个Handler,以便完成时能够提交给主线程。

32、如何将一个Activity设置成窗口的样式。
答:中配置:android :theme=”@android:style/Theme.Dialog”
另外android:theme=”@android:style/Theme.Translucent” 是设置透明

33、如何退出Activity?如何安全退出已调用多个Activity的Application?
答:对于单一Activity的应用来说,退出很简单,直接finish()即可。当然,也可以用killProcess()和System.exit()这样的方法。
对于多个activity,1、记录打开的Activity:每打开一个Activity,就记录下来。在需要退出时,关闭每一个Activity即可。2、发送特定广播:在需要结束应用时,发送一个特定的广播,每个Activity收到广播后,关闭即可。3、递归退出:在打开新的Activity时使用startActivityForResult,然后自己加标志,在onActivityResult中处理,递归关闭。为了编程方便,最好定义一个Activity基类,处理这些共通问题。
用EvenBus来管理

34、java中如何引用本地语言
可以用JNI(java native interface java 本地接口)接口 。

35、不要把自己变成“储钱罐”,因为没有人能够靠储钱变富;但一定要把自己变成“印钞机”,需要钱的时候可以随时靠能力去取。

36、
“我坚信重复是通向精通的必由之路。当我们学习一种新的技能,必须经常性地对这种技能加以练习。当我们学习一种新的知识或理论,也必须对尽可能多地对其加以应用。”

展开阅读全文

没有更多推荐了,返回首页