اجرا شدن دستور توسط یوآی ترد یا ترد دیگر
سلام
چرا وقتی handler.post(thread) مینویسیم محاسبه توسط یوآی ترد انجام میشه و وقتی مینویسیم new Thread(thread).start() محاسبه توسط ترد کمکی انجام میشه؟
package com.google.myapplication;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ll);
}
public void clickListener(View v)
{
Handler handler=new Handler();
Runnable thread=new Runnable(){
@Override
public void run() {
for (int i=0;i<=1000000;i++)
if (i%2==0)
Log.i("myapp",i+" is Even");
}
};
// handler.post(thread);
new Thread(thread).start();
}
}
نقل قول: اجرا شدن دستور توسط یوآی ترد یا ترد دیگر
نقل قول:
نوشته شده توسط
kamran_14
سلام
چرا وقتی handler.post(thread) مینویسیم محاسبه توسط یوآی ترد انجام میشه و وقتی مینویسیم new Thread(thread).start() محاسبه توسط ترد کمکی انجام میشه؟
package com.google.myapplication;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ll);
}
public void clickListener(View v)
{
Handler handler=new Handler();
Runnable thread=new Runnable(){
@Override
public void run() {
for (int i=0;i<=1000000;i++)
if (i%2==0)
Log.i("myapp",i+" is Even");
}
};
// handler.post(thread);
new Thread(thread).start();
}
}
برای اینکه شما handler را در main thread ایجاد کردید، توجه داشته باشید که کلاس handler یک نخ جدید ایجاد نمیکنه!(کلاس فوق یکی از راههای کمکی هست که میشه در thread main عملیات جدیدی اضافه کرد)
ولی خوب همانطور که واضح هست new Thread یک نخ جدید ایجاد میکنه بنابراین در یک نخ جداگانه ای از thread main اجرا خواهد شد.