`
QCheng5453
  • 浏览: 16494 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

Android笔记——Day2 *Java中类的继承 *多线程Handler

 
阅读更多

1、Java中类的继承。

··Java中类的继承所产生的访问权限的问题和C++中不太一样。

··Java中多了一个包的概念。类中成员的访问权限多了一个default的访问权限。(默认不写的访问权限)

··在Java同一个包中,只要成员不是以private修饰的,包中类与类之间都可以相互访问。

··一个类只有声明为public才可以被其他包中的类所发现,才可以进行导入。声明为public时,文件名必须和类名一样。因此一个文件中只能有一个public类。

··protected具有所有default所具有的访问权限。protected在不同包中继承之后可以被访问,而default不行(即使已经导入了)

··Java中使用interface实现多重继承。interface中都是public的抽象函数。实现接口用关键字implements。

··个人认为好的编程习惯有:

1)一个文件中尽量只有一个类,并且为public类。

2)不加声明的成员尽量赋以protected权限,方便日后的继承。

3)等日后具体编程的时候再总结吧...

测试代码如下...

 

//hello.java和test2.java在同一个包中,test.java在另一个包内
public class hello {
	    int a = 10;
	    private void print(){
		System.out.println(a);
	}
}
import soga.test;
public class test2 {
	public static void main(String srgs[]){
		hello aa = new hello();
		aa.print();//此句报错
	}
}
public class test extends SEU.hello{
	void hhhh(){
		hello aaaa = new hello();
		this.print();
	}
	protected void print(){
		System.out.println("adsa");
	}
	public void seta(int a){
		this.a = a;//报错
	}
	public void out(){
		System.out.println(a);//报错
	}
}	

 

 

2、多线程

··Java中的多线程的实现可以有两种方法,一种是继承Thread类,还有一种是实现Runnable接口。(实际上Thread就是继承了Runnable接口的。

··具体过程:

1)新写一个类实现Runnable接口,并重写其中的run()函数,run()函数中就是要在另外一个线程中完成的内 容。

2)创建出一个上面新写的类的对象,使用Thread(该对象)生成一个新的线程对象,调用该线程对象的start()方法便可运行该线程。

3)想要让某个线程暂时停下一会可以使用Thread.sleep(长整形数) 的方法。

4)继承Thread类实现多线程的方法类似。无需有Thread(该对象)这一步。

代码如下:

 

public class thr {
	public static void main(String args[]){
		newthread thread1 = new newthread();
		new Thread(thread1).start();//生成新的线程对象并调用start()方法
		try{
			Thread.sleep(1);
		}catch (Exception e) {
		}
		System.out.print("hello android");
	}
}
class newthread implements Runnable{
	public void run(){
		for(int i=0;i<=10;i++){
			System.out.print(i);
		}
	}
}
//运行的结果为“01234567hello android8910”
 

Android中的多线程:

Android中的多线程常常借助于Handler实现,由于Android多线程中可能会对布局界面进行改变,而Android貌似不允许在Thread或Runnable中对布局进行改变。实现的一般方法是在Runnable的run()函数中向一个Handler对象(取名为handler)发送消息进入队列,handler中handleMessage(Message msg)方法会对消息进行处理,在这里对布局进行改变。是某个多线程反复不断地做,可以再改Runnable(取名为run1)对象的run()方法中加上“handler.postDelayed(run1,几毫秒后加进handler中)”。

我写了个类似秒表的程序(不是精确的),用多线程实现,实现开始,暂停,和结束功能。代码如下:

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
	/>

    <EditText
        android:text="0"
        android:id="@+id/num"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
       />


    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/start"
            android:layout_width="fill_parent"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:text="START" />

        <Button
            android:id="@+id/stop"
            android:layout_width="fill_parent"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:text="STOP" />

        <Button
            android:id="@+id/end"
            android:layout_width="fill_parent"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:text="END" />

    </LinearLayout>

</LinearLayout>

package com.seu;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class CountppActivity extends Activity {
	EditText num;
	long count = 0;
	Handler handler = new Handler(){
		public void handleMessage(Message msg) {//消息处理;
			switch (msg.what){
			case 0:
				num.setText(String.valueOf(count));
				break;
			default:
				super.handleMessage(msg);
				break;
			}
		}
	};
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button startButton,stopButton,endButton;
        startButton = (Button)findViewById(R.id.start);
        stopButton = (Button)findViewById(R.id.stop);
        endButton = (Button)findViewById(R.id.end);
        num = (EditText)findViewById(R.id.num);
        startButton.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				new Thread(run1).start();//开始执行run1;
			}
		});
        stopButton.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				handler.removeCallbacks(run1);
				handler.removeMessages(0);//清除handler队列中0的消息;
			}
		});
        endButton.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				handler.removeCallbacks(run1);//清除handler队列中某线程;
				count = 0;
				handler.sendEmptyMessage(0);
			}
		});
    }
    Runnable run1 = new Runnable() {
		
		@Override
		public void run() {
			count++;
			handler.sendEmptyMessage(0);
			handler.postDelayed(run1, 1);//反复循环叠加;
		}
	};
}
 

 

 

 

分享到:
评论

相关推荐

    安卓Android源码——讲多线程的操作方式.zip

    通过学习以上内容,开发者可以更好地理解Android中多线程的工作原理,以及如何有效地利用多线程优化应用性能。在实际开发中,结合具体的场景选择合适的多线程策略,可以大大提高应用的响应速度和用户体验。

    安卓Android源码——HandlerLooper2.rar

    这个压缩包“安卓Android源码——HandlerLooper2.rar”可能会包含对这些概念的实例解析,比如如何自定义`Handler`,如何在子线程中使用`Looper`,以及如何调试和优化消息传递等。通过学习这些源码,开发者可以更深入...

    android——多线程

    标题"android——多线程"和描述"android——Handler与多线程应用范例"暗示我们将深入探讨如何在Android中使用Handler来管理多线程。 Android系统默认运行在一个单线程环境中,即主线程,也被称为UI线程。主线程主要...

    安卓Android源码——MineSweeper由java实现.zip

    《安卓Android源码——MineSweeper由Java实现》 在安卓开发中,理解源码是提升技术深度的重要途径。本资源提供的是一个基于Java语言实现的经典游戏——MineSweeper(扫雷)的源码,它对于学习Android游戏开发以及...

    安卓Android源码——HandlerMessage2.rar

    在"安卓Android源码——HandlerMessage2.rar"中,你可能会找到关于这些概念的实际代码示例,这将有助于你从实践中学习和掌握`Handler`、`Message`的使用方法。通过分析和调试这些代码,你将能够更好地理解Android...

    安卓Android源码——android多线程断点下载.zip

    在安卓(Android)平台上,开发一个支持多线程和断点续传的下载功能是一项常见的需求,这在大型文件如应用程序、游戏或者视频的下载场景中尤为重要。本资源"安卓Android源码——android多线程断点下载.zip"提供了一...

    安卓Android源码——HandlerMessage3.rar

    在安卓(Android)开发中,`Handler`、`Message` 和 `Looper` 是实现线程间通信的关键组件,尤其在处理UI更新时。这个压缩包"安卓Android源码——HandlerMessage3.rar"很可能包含了关于这三者如何协同工作的示例代码...

    安卓Android源码——安卓Android快速框架+多线程下载框架的技术.rar

    本资源"安卓Android源码——安卓Android快速框架+多线程下载框架的技术"提供了深入理解Android平台下的应用程序开发,特别是涉及到Afinal和Gson这两个关键库的使用。下面我们将详细探讨这些知识点。 一、Android...

    Android JNI多线程编程回调JAVA函数

    本话题将深入探讨如何在Android中使用JNI进行多线程编程,并实现native方法对Java函数的回调。 1. **JNI基础知识**: - JNI是Java平台的一部分,为Java应用程序提供了与本地代码交互的能力。开发者可以通过JNI在...

    安卓Android源码——android相册系统(用Matrix实现).zip

    这个压缩包文件"安卓Android源码——android相册系统(用Matrix实现).zip"包含了一个使用Matrix类来实现的相册系统源码。Matrix是Android图形库中的一个关键类,它允许开发者对图像进行平移、旋转、缩放等变换操作。...

    android多线程handler/message机制详解

    在 Android 中,多线程机制是基于 Handler 和 Message 机制的。 Handler 是什么?Handler 是一个处理器,它负责处理和绑定到该 Handler 的线程中的 Message。每一个 Handler 都必须关联一个 Looper,并且两者是一一...

    Android——显示时间和暂停时间(Handler类操作线程)

    `Handler`类是Android中处理消息和线程交互的核心工具,它允许我们在主线程中执行特定的操作,比如更新UI,而这些操作通常由工作线程触发。本篇文章将深入探讨如何利用`Handler`来实现显示和暂停时间的功能。 `...

    安卓笔记——安卓详细笔记汇总

    这份名为“安卓笔记——安卓详细笔记汇总”的资源,无疑是安卓开发者或者学习者的重要参考资料。以下将对这个压缩包中可能包含的知识点进行深入解析。 首先,Android系统是基于Linux内核的开源操作系统,广泛应用于...

    Android源码——多线程断点下载源码.zip

    在Android开发中,多线程断点下载是一项重要的技术,尤其在处理大文件时,能够提高下载效率并允许用户在中断后继续之前的进度。本文将深入解析Android源码中的多线程断点下载实现原理。 一、多线程下载原理 1. **...

    安卓Android源码——浮动窗口播放器.zip

    3. **多线程处理**:为了保证视频播放流畅,源码可能使用了线程管理技术,如Handler、AsyncTask或Thread,来处理视频解码和渲染。 4. **用户界面设计**:源码中应该包含布局XML文件,定义了浮动窗口的UI元素和交互...

    Android Studio —— Thread

    由于Android系统的主线程(UI线程)主要负责处理用户界面交互,因此,为了保持UI的流畅性,我们需要将耗时操作放在其他线程中执行,这就是多线程的概念。Android Studio提供了多种方式来处理多线程。 1. **...

    安卓Android源码——多线程断点下载.zip

    这个“安卓Android源码——多线程断点下载.zip”文件很可能包含了实现这一功能的源代码示例。以下是对这一技术的详细说明: 1. **多线程下载**:传统的单线程下载方式容易受到网络波动的影响,速度可能较慢。多线程...

    安卓Android源码——精典源码之多线程断点下载.zip

    这个压缩包文件"安卓Android源码——精典源码之多线程断点下载.zip"包含了实现这一功能的源代码示例,我们可以从以下几个关键知识点进行详细探讨: 1. **多线程下载**:在下载大文件时,使用多线程可以提高下载速度...

    安卓Android源码——HandlerLooper1.rar

    `Handler`是Android中的一个类,它允许开发者在不同的线程中发送和处理消息。通常,我们在主线程(UI线程)中创建一个`Handler`实例,然后在这个`Handler`中定义消息处理逻辑。通过`sendMessage()`或`post(Runnable)...

    安卓Android源码——android 使用javacv进行录像[模仿vine].zip

    总结,这个项目展示了如何在Android中利用JavaCV库实现录像功能,同时借鉴Vine的用户体验设计。通过学习这个项目,开发者可以了解到Android录像的基本流程,以及如何利用JavaCV进行更高级的视频处理。

Global site tag (gtag.js) - Google Analytics