بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
آیا یک Thread میتواند خروجی (مثلا String ) داشته باشد؟
سلام.توی آموزشهای استاد در مورد Threading (تا اونجایی که من نگاه کردم) همه Thread ها از نوع Runnable و بدون خروجی بودند.
میخواستم بدونم که آیا امکانش هست که یک Thread خروجی داشته باشه؟ مثلا یک مقدار String رو برگردونه.
میدونم توی ابزار AsyncTask این امکان وجود داره اما به دلایلی که من نمیدونم استاد استفاده از این ابزار رو توصیه نمیکنه و Thread رو ترجیح میده.
از راهنمایی اساتید و دوستان ممنونم.
0
0
شما داخل ترد هیچ چیزی رو نمیتونید در ترد return کنید باید از لیسنر استفاده کنید (11 سال پیش)
0
0
دوست عزیز اگر از handler تو thread استفاده کنید هر کاری که دوست دارید میتونید انجام بدید. (11 سال پیش)
0
0
مهندس ترد نمیتونه هیچ چیز رو return بکنه چون نوع خروجی متدش void هست (11 سال پیش)
0
0
درسته thread به تنهایی نمیتونه ولی من با این روش هم محاسبه تو thread انجام میدم هم داده هامو return میکنم. (11 سال پیش)
0
0
بی زحمت روشتون رو بنویسید ببینم چطوریه.؟
ممنون میشم (11 سال پیش)
برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال
ATRAS
11 سال پیش
0
0
نمیدونم منظور شما دقیقا همین هست یا نه ولی فعلا این کد دم دستم بود.
import android.os.Handler;
publicclassMindextends V {
publicstaticHandler handler1 =newHandler();
@Override
protectedvoid onCreate(android.os.Bundle savedInstanceState){
super.onCreate(savedInstanceState);
mydate =""+ year +"/"+ mon +"/"+ day +""+ hor +":ساعت";
Thread hour =newThread(newRunnable(){
@Override
publicvoid run(){
do{
try{
Thread.sleep(60*1000);
handlerpostmind();
}
catch(InterruptedException e){
e.printStackTrace();
}
}
while(true);
}
});
hour.start();
};
publicvoid handlerpostmind(){
Mind.handler1.post(newRunnable(){
@Override
publicvoid run(){
getdaramad();
}
});
}
publicvoid getdaramad(){
if(hor <=24){
hor +=1;
}
if(hor >=24){
day = day +1;
hor =1;
}
if(day >=30){
mon = mon +1;
day =1;
}
if(mon >=12){
year = year +1;
mon =1;
}
mydate =""+ year +"/"+ mon +"/"+ day +""+ hor +"ساعت";
}
}
خُب الان کجاش شما یه مقدار رو از ترد return کردی ؟ شما اومدی چندین متد رو تو هم صدا کردی برای اینکه یه مقدار رو از ترد خارج کنی .در ضمن این روش استفاده خیلی خشک هست ینی اگر شما چندین متد مختلف داشته باشید نمیتونید با این روش پیاده سازیش کنید . بهترین راه استفاده از لیسنر هست که استاد هم در آموزش هاشون یاد دادن . (11 سال پیش)
حرف شما هم متین هست ولی الان این روش آیا یک روش راحت هست ؟ ایجاد چندین متد برای خارج کردن یک مقدار صحیح هست ؟ شما فرض کنید برای اتصال به سرور 20 نوع متد مختلف دارید آیا با این روش میشه خروجی مناسب با کمترین کد نویسی رو داشت . الان شما داخل اکتیویتی ظاهرا اومدین و ترد رو اجرا کردید ، اگر ترد خارج از کلاس اکتیویتی و به صورت مستقل باشه جواب میده ؟ اینا سوالاتی هست که باید بررسی کنید و با توجه به این قضیه شما یک متد خوب ، تمیز و با کارایی بالا بنویسید. شاید در پروژه های معمولی جواب بده ولی در پروژه های سنگین حتما به مشکل برمیخورید تمام عرایض بنده جهت راهنمایی هست . (11 سال پیش)
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .