[英]Overriding listeners and threads
它是一個好主意,倍率(執行),監聽或線程的行為在當前代碼或創建一個新的類,實現或擴展呢?
例如
public doSomething() {
Thread thr = new Thread(){
public void run() {
//thread business
}
};
thr.start();
}
與
public class MyThread extends Thread {
public void run() {
//thread business
}
}
......
public doSomething() {
MyThread thr = new MyThread();
thr.start();
}
請指出這兩種做法的利弊。
第一種方法永遠不是一個好主意。 當我們這樣做時,您實際上創建了一個內部類。 並且由於內部類具有保存父類對象的隱式屬性,因此可能導致內存泄漏。
由於上述原因,在自己的文件中創建新類的第二個選項總是更好。
編輯2:
第一種方法永遠不是一個好主意。 當我們這樣做時,您實際上創建了一個內部類。 並且由於內部類具有保存父類對象的隱式屬性,因此可能導致內存泄漏。
由於上述原因,在自己的文件中創建新類的第二個選項總是更好。
編輯2:
public class MyThread extends Thread {
private WeakReference<Button> mButton;
public MyThread(Button button) {
mButton = new WeakReference(button);
// Use this button where-ever you want
}
public void run() {
//thread business
}
}
......
Button btn = ...;
public doSomething() {
MyThread thr = new MyThread(btn);
thr.start();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.