android 中 thread 與 runnable的使用
android 中thread 是建立一個thread.
而runnable也是建立一個thread.
但兩者其實有很大的關係:
1. 單次型 (Java原有的)
2. 常駐型 (Android特有的)
可參考這篇文章
正規寫法:
new Thread(new Runnable()
{
@Override
public void run()
{
do_something();
}
}).start();
因本來在想thread跟 runnable都是建立thread,
為何要寫兩次...於是昨天把這段code中的 new Runnable()拿掉...
試試看會發生什麼事...
04-30 16:03:53.188: E/AndroidHttpClient(10243): Leak found
04-30 16:03:53.188: E/AndroidHttpClient(10243): java.lang.IllegalStateException: AndroidHttpClient created and never closed
04-30 16:03:53.188: E/AndroidHttpClient(10243): at android.net.http.AndroidHttpClient.(AndroidHttpClient.java:162)
於是就發生了leak found error.
所以這兩個thread與 runnable還是要一起用,
單次性thread還是要按照正規作法.
不要挑戰 android 與java....
而runnable也是建立一個thread.
但兩者其實有很大的關係:
1. 單次型 (Java原有的)
2. 常駐型 (Android特有的)
可參考這篇文章
正規寫法:
new Thread(new Runnable()
{
@Override
public void run()
{
do_something();
}
}).start();
因本來在想thread跟 runnable都是建立thread,
為何要寫兩次...於是昨天把這段code中的 new Runnable()拿掉...
試試看會發生什麼事...
04-30 16:03:53.188: E/AndroidHttpClient(10243): Leak found
04-30 16:03:53.188: E/AndroidHttpClient(10243): java.lang.IllegalStateException: AndroidHttpClient created and never closed
04-30 16:03:53.188: E/AndroidHttpClient(10243): at android.net.http.AndroidHttpClient.
於是就發生了leak found error.
所以這兩個thread與 runnable還是要一起用,
單次性thread還是要按照正規作法.
不要挑戰 android 與java....
留言
張貼留言