sga*_*arg 18 java multithreading android runnable
我试图理解这里的代码,特别是匿名类
private Runnable mUpdateTimeTask = new Runnable() {
public void run() {
final long start = mStartTime;
long millis = SystemClock.uptimeMillis() - start;
int seconds = (int) (millis / 1000);
int minutes = seconds / 60;
seconds = seconds % 60;
if (seconds < 10) {
mTimeLabel.setText("" + minutes + ":0" + seconds);
} else {
mTimeLabel.setText("" + minutes + ":" + seconds);
}
mHandler.postAtTime(this,
start + (((minutes * 60) + seconds + 1) * 1000));
}
};
Run Code Online (Sandbox Code Playgroud)
文章说
Handler将更新代码作为主线程的一部分运行,避免了第二个线程的开销.
不应该创建一个新的Runnable类创建一个新的第二个线程?除了能够将Runnable类传递给postAtTime之外,Runnable类的目的是什么?
谢谢
Wyz*_*a-- 46
Runnable通常用于提供线程应该运行的代码,但Runnable它本身与线程无关.它只是一个run()方法的对象.
在Android中,Handler该类可用于要求框架稍后在同一线程上运行某些代码,而不是在另一个线程上运行. Runnable用于提供应该稍后运行的代码.
Sha*_*dne 27
如果你想创造一个新的Thread...你可以做这样的事......
Thread t = new Thread(new Runnable() { public void run() {
// your code goes here...
}});
Run Code Online (Sandbox Code Playgroud)
npi*_*nti 16
该Runnable界面中,你可以实现多线程不是扩展其他的另一种方式Thread,由于这样的事实,Java允许你扩展只有一个类的类.
但是,您可以使用新的Thread(Runnable runnable)构造函数,如下所示:
private Thread thread = new Thread(new Runnable() {
public void run() {
final long start = mStartTime;
long millis = SystemClock.uptimeMillis() - start;
int seconds = (int) (millis / 1000);
int minutes = seconds / 60;
seconds = seconds % 60;
if (seconds < 10) {
mTimeLabel.setText("" + minutes + ":0" + seconds);
} else {
mTimeLabel.setText("" + minutes + ":" + seconds);
}
mHandler.postAtTime(this,
start + (((minutes * 60) + seconds + 1) * 1000));
}
});
thread.start();
Run Code Online (Sandbox Code Playgroud)
Vic*_*iz. 11
您可以像这样创建一个线程:
Thread thread = new Thread(new Runnable() {
public void run() {
}
});
thread.start();
Run Code Online (Sandbox Code Playgroud)
此外,您可以使用Runnable,Asyntask,Timer,TimerTaks和AlarmManager来执行线程.
| 归档时间: |
|
| 查看次数: |
98557 次 |
| 最近记录: |