​ android 线程只启动一次​

​在java中同一个线程只能被start()一次,当第二次start()就会报异常​


android 线程只启动一次

将static线程放到Application

一般放到最后面,不然application的准备工作还没好,应用就崩溃了。

android 线程只启动一次_前端

​编辑

application个启动的静态方法

android 线程只启动一次_前端_02

​编辑

baseActivity会有调用onDestory

android 线程只启动一次_java_03

​编辑

在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