Android 之 View线程 run方法和draw方法执行的先后顺序

原创 2012年03月30日 00:13:30
package com.ethan.activity;

import android.content.Context;
import android.graphics.Canvas;
import android.util.Log;
import android.view.View;

public class MyView extends View implements Runnable {

	private static final String TAG = "view";
	
	public MyView(Context context) {
		super(context);
	}

	@Override
	protected void onDraw(Canvas canvas) {
		Log.i(TAG, "hello2.................");
		super.onDraw(canvas);
	}

	@Override
	public void draw(Canvas canvas) {
		//先打印出来,draw调用onDraw
		Log.i(TAG, "hello.................");
		super.draw(canvas);
	}

	@Override
	public void run() {
		Log.i(TAG, "run..........");
	}

	public void start() {
		new Thread(this).start();
	}
}


package com.ethan.activity;

import android.app.Activity;
import android.os.Bundle;

public class ViewActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        MyView view = new MyView(getApplicationContext());
        
      setContentView(view);
      view.start();
    }
}

根据打印结果得出:先执行run() ,然后执行draw()
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

view.draw()以及调用invalidate()没有触发onDraw()

View中: public void draw(Canvas canvas) { /* 1. Draw the background   绘制背景 2. If ...

Android之为什么只能在UI线程操作View

很长一段时间以来,面试的时候我总喜欢问一个问题:为什么只能在UI线程对View进行操作?android程序员在涉足android开发的早期应该就有这样一个认识,但是没有多少人知道究竟是为什么。以至于后...

Android新线程中更新主线程UI中的View方法汇总

Android中的UI控件都不是线程安全的,所以如果在某一个新线程中直接更新主线程中的UI控件时就会报如下错误: android.view.ViewRootImpl$CalledFromWrongT...

Android 中通过Canvas 与线程结合实现动画效果

前段时间在公司做了一个模块,不使用第三方动画效果类,直接通过Canvas 进行图像的绘制,并通过Thread实现动画的效果 该模块主要是实现车辆运行时候的道路运行效果,在进行实施前做了一个相关的Dem...

view的执行过程,各种方法的调用先后顺序

view的执行过程,各种方法的调用先后顺序 这里只是测试各个方法的执行流程,有些时候就是这些小基础是非常重要的,下了测试代码如下: package com.world.hello.viewpager...

线程的两种创建方式:Thread类和Runnable接口,它们都要复写run方法

/*线程: * 1.如何在自定义的代码中,自定义一个线程呢? * * 通过对API的查找,java已提供了对线程这类事物的描述。就是Thread类 * * 创建线程的第一种方式:继承Th...

Java中启动线程start和run方法的区别

Java中启动线程有两种方式,继承Thread类以及实现接口Runnable,由于Java无法实现多重继承,故经常通过实现接口Runnable来创建线程。但是无论哪种方式创建都可以通过start()和...

java线程的start和run方法解析

自定义线程两种方法 自定义一个runnable接口的实现类,然后构造一个thread,即对thread传入一个runnable接口类。 new一个thread或者写个thread子类,覆盖它的run方...

多线程——停止线程(结束run方法)

package com.qianfeng.demo01; /** * 停止线程: * 1.stop():已过时,这种方法有固有的不安全性,强制停止线程,不论处于什么状态都会停止,就会导致线程的不安...

关于Android中调用了post方法后貌似没有执行run方法的解释及解决办法

(真纠结,刚刚发了之后才发现排版太乱了,稍作修改再发了哈~) 哎……之前纠结过Handler的运行机制,后来貌似懂了,但是近几天又被自己的工程绕的好像又不懂了一样!! 其实之前理解...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)