android 线程只启动一次

103 阅读2分钟

​持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第5天,点击查看活动详情

 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