Android Studio新建工程没有libs文件夹 在app目录下的build.gradle文件中添加sourceSets,在android内部,与buildTypes同级。新版Android Studio越来越会来事儿,今天遇到了个揍性问题,查了许多博客都不行,最终找到了一个。在build.gradle下就能看到了。在app目录下新建一个libs目录。
进程进程进程 如果父进程没有通过调用wait()、waitpid()或类似的系统调用来等待(并收集)其子进程的退出状态,那么子进程的进程描述符(PCB)就会保持在系统中,形成一个所谓的“僵尸进程”(或僵死进程)。如果父进程确实调用了wait()或类似的函数来等待子进程,那么子进程就不会变成僵尸进程,因为它的退出状态会被及时读取,并且进程描述符也会被回收。进程创建时是通过复制进程0得到的,都是0的子进程,未处理完的新进程,置为不可中断的等待状态,防止被调度。进程是抢占式的,内核态执行的进程不能被抢占,用户态的可以。
Android中创建线程和消息处理 在Android中,消息处理是跨线程通信的重要手段之一,特别是在需要与UI线程交互时。通过Handler、Looper和Message(或Runnable),我们可以轻松地在不同线程之间传递数据和执行代码。
Looper.prepare()方法和Looper.loop()是干啥的 在这个例子中,MyThread类重写了run()方法,并在其中调用了Looper.prepare()来初始化Looper和消息队列,然后创建了一个Handler用于处理消息。在Android中,UI线程(主线程)默认已经有一个Looper在运行,因此不需要在UI线程中显式调用Looper.prepare()和Looper.loop()。需要注意的是,Looper.prepare()在一个线程中只能被调用一次,因为每个线程只能有一个Looper和一个消息队列。
String s =“abc“与String s = new String(“abc“)的区别&new String(“abc“)创建了几个对象 String s = "abc"与String s = new String("abc")的区别