- 浏览: 15880 次
最新评论
Android笔记——Day2 *Java中类的继承 *多线程Handler
- 博客分类:
- Android笔记
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);//反复循环叠加;
}
};
}
发表评论
-
SurfaceView的使用
2012-09-07 18:51 869SurfaceView的使用 先贴上几个地址: ht ... -
传感器的应用开发
2012-09-07 14:55 627传感器的应用开发 先贴几个地址 http://www ... -
Android笔记——NewDay1 AppWidget的一个更新小问题
2012-08-20 19:17 808之前在写一个AppWidget,需要根据按键显示不同的内容,其 ... -
Android笔记——Day10 *popUpWindow基本使用 *Notification基本使用
2012-07-20 07:40 931前十天去了北京,今天 ... -
Android笔记——Day9 *Android异步操作 *Http操作基础 *ListView使用方法
2012-07-07 18:34 10671、Android异步操作 ··之前说过用Threa ... -
Android笔记——Day8 *Animation的使用 *实现用户定位
2012-07-07 00:21 813反正每天看看Mars老师视频,完了自己在总结一下,感觉挺好的- ... -
Android笔记——Day7 *AppWidget的使用初步 *Android文本输入输出时的中文编码问题
2012-07-05 02:31 9031、AppWidget的使用初步 先贴个地址,这个地址里面 ... -
Android笔记——Day6 *Service初步 *利用序列化在Activity之间交换数据
2012-07-03 18:12 899昨天貌似ITEYE用CSDN的号登不上去,博客没法写了,现在又 ... -
Android笔记——Day5 *SQLite基本用法 *Broadcast广播机制 *WiFi基础
2012-07-01 00:38 1316//本文中代码基本上是Ma ... -
Android笔记——Day4 *Android对SD卡的操作
2012-06-29 23:03 1675前两天去苏州玩了,今天终于又可以学Android写博客了--# ... -
Android笔记——Day3 *异常处理 *Java中的io *匿名内部类
2012-06-27 10:03 10151、异常处理。 ··Java中含有异常处理机制。 ·· ... -
Android笔记——Day1 *Activity生命周期 *Activiity切换效果
2012-06-24 22:37 10701、Android中Activity的生命周期。 http ...
相关推荐
android——Handler与多线程应用范例
安卓Android源码——HandlerLooper2.rar
安卓Android源码——HandlerMessage2.rar
安卓Android源码——HandlerLooper1.rar
安卓Android源码——HandlerMessage1.rar
安卓Android源码——HandlerMessage3.rar
Android中多线程的Handler的工作原理,其中涉及到MessageQueue和Looper。详情可以参见博客:http://www.cnblogs.com/plokmju/p/android_Looper.html
Android Handler类详解 Android Handler类详解 Android Handler类详解 Android Handler类详解
NULL 博文链接:https://z18022893621.iteye.com/blog/1965120
171227-03.在Java中使用Android的Thread和Handler机制.java
主要对handler 、message机制进行了详解,如果想了解更多android相关知识,可以去我博客看看
android 多线程 looper handler的讲解,轻松学明白androd的消息机制,附有很多实例。
下面是一段大家都比较熟悉的代码: 代码如下:Handler ...上述代码中的handler并没有调用线程myThread的start()方法,而是直接调用了run()方法,这也就意味着实际上并没有创建一个新的线程,只是在当前线程中调用run()
【Android开发入门】Android线程之Handler
Android中handler的使用,处理多线程的使用
简单实现更新UI的操作,仅供学习参考 这里用到handler类,runnable类,按钮的点击事件
安卓Android源码——用ViewPager实现手动切换,用Timer+Handler实现自动切换,左右完美无限滑动效果非常平滑.zip
安卓Android源码——用ViewPager实现手动切换,用Timer + Handler实现自动切换,左右完美无限滑动效果非常平滑.zip
在Android中使用AsyncTask和Handler线程间交互的方式,详情参见博客:http://www.cnblogs.com/plokmju/p/android_AsyncTask.html和http://www.cnblogs.com/plokmju/p/android_Handler.html
Android线程操作 handler demo