PDA

View Full Version : اجرا شدن دستور توسط یوآی ترد یا ترد دیگر



kamran_14
سه شنبه 25 تیر 1398, 21:19 عصر
سلام
چرا وقتی 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();
}
}

farhad_shiri_ex
چهارشنبه 26 تیر 1398, 08:04 صبح
سلام
چرا وقتی 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 اجرا خواهد شد.