- 浏览: 16494 次
最新评论
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 900SurfaceView的使用 先贴上几个地址: ht ... -
传感器的应用开发
2012-09-07 14:55 659传感器的应用开发 先贴几个地址 http://www ... -
Android笔记——NewDay1 AppWidget的一个更新小问题
2012-08-20 19:17 996之前在写一个AppWidget,需要根据按键显示不同的内容,其 ... -
Android笔记——Day10 *popUpWindow基本使用 *Notification基本使用
2012-07-20 07:40 963前十天去了北京,今天 ... -
Android笔记——Day9 *Android异步操作 *Http操作基础 *ListView使用方法
2012-07-07 18:34 10881、Android异步操作 ··之前说过用Threa ... -
Android笔记——Day8 *Animation的使用 *实现用户定位
2012-07-07 00:21 843反正每天看看Mars老师视频,完了自己在总结一下,感觉挺好的- ... -
Android笔记——Day7 *AppWidget的使用初步 *Android文本输入输出时的中文编码问题
2012-07-05 02:31 9361、AppWidget的使用初步 先贴个地址,这个地址里面 ... -
Android笔记——Day6 *Service初步 *利用序列化在Activity之间交换数据
2012-07-03 18:12 923昨天貌似ITEYE用CSDN的号登不上去,博客没法写了,现在又 ... -
Android笔记——Day5 *SQLite基本用法 *Broadcast广播机制 *WiFi基础
2012-07-01 00:38 1342//本文中代码基本上是Ma ... -
Android笔记——Day4 *Android对SD卡的操作
2012-06-29 23:03 1702前两天去苏州玩了,今天终于又可以学Android写博客了--# ... -
Android笔记——Day3 *异常处理 *Java中的io *匿名内部类
2012-06-27 10:03 10471、异常处理。 ··Java中含有异常处理机制。 ·· ... -
Android笔记——Day1 *Activity生命周期 *Activiity切换效果
2012-06-24 22:37 11021、Android中Activity的生命周期。 http ...
相关推荐
通过学习以上内容,开发者可以更好地理解Android中多线程的工作原理,以及如何有效地利用多线程优化应用性能。在实际开发中,结合具体的场景选择合适的多线程策略,可以大大提高应用的响应速度和用户体验。
这个压缩包“安卓Android源码——HandlerLooper2.rar”可能会包含对这些概念的实例解析,比如如何自定义`Handler`,如何在子线程中使用`Looper`,以及如何调试和优化消息传递等。通过学习这些源码,开发者可以更深入...
标题"android——多线程"和描述"android——Handler与多线程应用范例"暗示我们将深入探讨如何在Android中使用Handler来管理多线程。 Android系统默认运行在一个单线程环境中,即主线程,也被称为UI线程。主线程主要...
《安卓Android源码——MineSweeper由Java实现》 在安卓开发中,理解源码是提升技术深度的重要途径。本资源提供的是一个基于Java语言实现的经典游戏——MineSweeper(扫雷)的源码,它对于学习Android游戏开发以及...
在"安卓Android源码——HandlerMessage2.rar"中,你可能会找到关于这些概念的实际代码示例,这将有助于你从实践中学习和掌握`Handler`、`Message`的使用方法。通过分析和调试这些代码,你将能够更好地理解Android...
在安卓(Android)平台上,开发一个支持多线程和断点续传的下载功能是一项常见的需求,这在大型文件如应用程序、游戏或者视频的下载场景中尤为重要。本资源"安卓Android源码——android多线程断点下载.zip"提供了一...
在安卓(Android)开发中,`Handler`、`Message` 和 `Looper` 是实现线程间通信的关键组件,尤其在处理UI更新时。这个压缩包"安卓Android源码——HandlerMessage3.rar"很可能包含了关于这三者如何协同工作的示例代码...
本资源"安卓Android源码——安卓Android快速框架+多线程下载框架的技术"提供了深入理解Android平台下的应用程序开发,特别是涉及到Afinal和Gson这两个关键库的使用。下面我们将详细探讨这些知识点。 一、Android...
本话题将深入探讨如何在Android中使用JNI进行多线程编程,并实现native方法对Java函数的回调。 1. **JNI基础知识**: - JNI是Java平台的一部分,为Java应用程序提供了与本地代码交互的能力。开发者可以通过JNI在...
这个压缩包文件"安卓Android源码——android相册系统(用Matrix实现).zip"包含了一个使用Matrix类来实现的相册系统源码。Matrix是Android图形库中的一个关键类,它允许开发者对图像进行平移、旋转、缩放等变换操作。...
在 Android 中,多线程机制是基于 Handler 和 Message 机制的。 Handler 是什么?Handler 是一个处理器,它负责处理和绑定到该 Handler 的线程中的 Message。每一个 Handler 都必须关联一个 Looper,并且两者是一一...
`Handler`类是Android中处理消息和线程交互的核心工具,它允许我们在主线程中执行特定的操作,比如更新UI,而这些操作通常由工作线程触发。本篇文章将深入探讨如何利用`Handler`来实现显示和暂停时间的功能。 `...
这份名为“安卓笔记——安卓详细笔记汇总”的资源,无疑是安卓开发者或者学习者的重要参考资料。以下将对这个压缩包中可能包含的知识点进行深入解析。 首先,Android系统是基于Linux内核的开源操作系统,广泛应用于...
在Android开发中,多线程断点下载是一项重要的技术,尤其在处理大文件时,能够提高下载效率并允许用户在中断后继续之前的进度。本文将深入解析Android源码中的多线程断点下载实现原理。 一、多线程下载原理 1. **...
3. **多线程处理**:为了保证视频播放流畅,源码可能使用了线程管理技术,如Handler、AsyncTask或Thread,来处理视频解码和渲染。 4. **用户界面设计**:源码中应该包含布局XML文件,定义了浮动窗口的UI元素和交互...
由于Android系统的主线程(UI线程)主要负责处理用户界面交互,因此,为了保持UI的流畅性,我们需要将耗时操作放在其他线程中执行,这就是多线程的概念。Android Studio提供了多种方式来处理多线程。 1. **...
这个“安卓Android源码——多线程断点下载.zip”文件很可能包含了实现这一功能的源代码示例。以下是对这一技术的详细说明: 1. **多线程下载**:传统的单线程下载方式容易受到网络波动的影响,速度可能较慢。多线程...
这个压缩包文件"安卓Android源码——精典源码之多线程断点下载.zip"包含了实现这一功能的源代码示例,我们可以从以下几个关键知识点进行详细探讨: 1. **多线程下载**:在下载大文件时,使用多线程可以提高下载速度...
`Handler`是Android中的一个类,它允许开发者在不同的线程中发送和处理消息。通常,我们在主线程(UI线程)中创建一个`Handler`实例,然后在这个`Handler`中定义消息处理逻辑。通过`sendMessage()`或`post(Runnable)...
总结,这个项目展示了如何在Android中利用JavaCV库实现录像功能,同时借鉴Vine的用户体验设计。通过学习这个项目,开发者可以了解到Android录像的基本流程,以及如何利用JavaCV进行更高级的视频处理。