android 线程只启动一次
原创
©著作权归作者所有:来自51CTO博客作者ZhangJiQunMXP的原创作品,请联系作者获取转载授权,否则将追究法律责任
android 线程只启动一次
在java中同一个线程只能被start()一次,当第二次start()就会报异常
android 线程只启动一次
将static线程放到Application
一般放到最后面,不然application的准备工作还没好,应用就崩溃了。
编辑
application个启动的静态方法
编辑
baseActivity会有调用onDestory
编辑
在java中同一个线程只能被start()一次,当第二次start()就会报异常
需求:需要同一个线程多次执行同一个方法。为此可以使用notify(),wait()方法来达到我们想要的效果。先看代码
public class ThreadTest extends Thread {
private static boolean flag = false;
public ThreadTest() {
System.out.println("threadID is :"+Thread.currentThread().getId());
start();
}
/**
* @param args
*/
public static void main(String[] args) {
System.out.println("main threadID is :"+Thread.currentThread().getId());
ThreadTest test = new ThreadTest();
try {
sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
synchronized (test) {
test.notify();
}
try {
sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
synchronized (test) {
test.notify();
flag = true;
}
}
public void threadStart() {
if (!isAlive()) {
start();
}
}
@Override
public void run() {
while(true){
try {
System.out.println("threadID is :"+Thread.currentThread().getId());
synchronized (this) {
wait();
}
if (flag) {
break;
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
Android (安卓) getContext 和 getActivity的区别
getActivity()获得Fragment依附的Activity对象,返回活动此片段是当前关联 ,
getView()返回该 片段的根视图布局(由onCreateView(LayoutInflater, ViewGroup,Bundle)返回的布局)
- MainActivity.this:表示MainActivity对象,一般用在内部类中指示外面的this,如果在内部类直接用this,指示的是内部类本身。因为MainActivity继承Activity,而Activity继承Context,所以它也可以用来提供Activity Contex;
- this:表示当前对象;一般而言,在哪个类中调用,就是指向该对象。
- getContext():这个是View类中提供的方法,在继承了View的类中才可以调用,返回的是当前View运行在哪个Activity Context中。
- getActivity():获得Fragment依附的Activity对象。Fragment里边的getActivity()不推荐使用原因如下:这个方法会返回当前Fragment所附加的Activity,当Fragment生命周期结束并销毁时,getActivity()返回的是null,所以在使用时要注意判断null或者捕获空指针异常。
在Fragment中获取上下文Context一般用getActivity:
在Fragment中使用findViewById方法
Button button = getView().findViewById(R.id.btn);
int类型的图片转换成drawable和Bitmap
Drawable drawable = context.getResources