رفتن به مطلب
  • 0

چطور متوجه بشیم اکتیویتی خاصی از برنامه در حال اجرا هست ؟


mehran901

سوال

دوستان فرض کنید برنامه ای داریم که دفعه اول ک اجرا میشه اکتیویتی مین اجرا میشه 

و بعد از نشون دادن اسپلش اسکرین وارد اکتیویتی دوم میشه 

 

حالا در حالی ک برنامه بازه اگه باز برنامه رو اجرا کنیم اسپلش اسکرین ( همون اکتیویتی مین ) اجرا میشه و بعد میاد رو همون اکتیویتی دوم که باز هست 

 

چطور میشه موقع اجرای برنامه چک کرد که آیا نسخه دیگه ای از برنامه در حال اجرا اگه هست مثلا بخشی از کدهای create اکتیونی main اجرا نشه و ی راست بره اکتیوتی دوم رو اجرا کنه ؟

 

گیر شرط نوشتنش نیستم فقط مشکل تو چک کردن اینه ک main موقع اجرا چطور متوجه بشه activity دیگری از برنامه درحال اجراس و بخشی از کدهاشو اجرا نکنه 

 

 

تشکر

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

12 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

اگه شما اسپلشتون رو با تایمر نوشتید میتونید بیاد تو ساب تایمر تیک کد های زیر رو بزارید تا اسپلش فقط یکبار اجرا شه

Dim a as int

a=0

If a<1 then

کدهای اسپلشتون

End if

امتحان کنید ببینید جواب میگیرید ولی اگه کدهاتونو میزاشتید بهتر بود...

لینک ارسال
به اشتراک گذاری در سایت های دیگر

داداش گلم در لحظه فقط یک اکتیویتی میشه اجرا بشه اگر با دوربین کار کرده باشی در لحظه نمی تونی دو تا پنل رو توش دوربین بزاری

لینک ارسال
به اشتراک گذاری در سایت های دیگر

دوستان متوجه نشدین منظور منو 

 

 

ببینید 

 

اسپلش اسکرین من اینجور ساخته شده :

ی اکتیویتی main اجرا میشه و لایوتی که شامل تصویر اسپلش هست رو لود میکنه 

بعد از لود کاملش ، main بسته میشه و بعدش : اکتیویتی دوم اجرا میشه با لایوت های خودش 

 

خب مشکل اینجاس : 

 

وقتی اکتیویتی دوم درحال اجراس و یوزر با برنامه کار میکنه 

اگه ی لحظه بدون بستن برنامه از برنامه خارج بشه و دوباره رو آیکون اجرای برنامه کلیک کنه اسپلش بازم باز میشه ( یعنی برنامه از اکتیوتی main اجرا میشه لایوت مربوط به اسپلش رو اجرا میکنه و بعدش بسته میشه و اکتویتی دوم رو ( که قبلا بازم بوده ) دوباره باز میکنه ))

من میخوام وقتی برنامه بسته نشده اگه باز اجرا شد اسپلش اجرا نشه 

برای اینکه اسپلش اجرا نشه باید main که اجرا شد چک کنم اگه مثلا PID پروسس مربوط به برنامه من تو حاظفه باز هست لایوت اسپلش رو ران نکنه دیگه 

 

متوجه منظورم شدین ؟

 

 

سوالو اینطور مطرح کنم 

 

 

چطور میشه فهمید مثلا برنامه x بازه یا نه ؟ pid شو از تو حافظه در میاریم ؟ اگه معتبر بود یعنی بازه ؟ 

 

تو برنامه نویسی ویندوز میایم و هندل مربوط به کلاس پنجره اون برنامه یا پروسسش رو چک میکنیم 

تو اندروید چطور ؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

دوست عزیز اون کدی که نوشتم کاری میکنه اکتیویتی اسپلش فقط یکبار اجرا شه تا زمانی که برنامتون رو کامل نبستید...

لینک ارسال
به اشتراک گذاری در سایت های دیگر

دوست عزیز اون کدی که نوشتم کاری میکنه اکتیویتی اسپلش فقط یکبار اجرا شه تا زمانی که برنامتون رو کامل نبستید...

کد شما هر سری مقدار a=0 رو میگیره بعد میااد چک میشه 

a<1

پس حتما برقراره و هرزمان این کد اجرا بشه بودو نبود شرط بی تاثیره مستقیم اسپلش کد اجرا میشه 

 

پس انتهاش ی a= a+1 اضافه کنید که درست بشه  و a رو هم در sub process golbal اکتیویتی ای ک باز میمونه باید تعریف کرد 

 

 

 

ایده قشنگی بود کار کرد 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

شما در اکتیویتی دوم رویداد Activity.Finish رو نوشتید؟

آره اکتیویتی رو میبندم و میرم اکتیویتی بعدی 

 

مشکل حل شد با همون روش خلاقی ک یکی از دوستان گفتن که البته نیاز به اصلاح داشت 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

وقتی اکتیویتی بسته هست و باز میشه اول رویداد activity_create اجرا میشه بعد activity_resume

وقتی اکتیویتی بسته نشه اما بره تو حالت فریز-مثلا وقتی دکمه home رو تو گوشی بزنیم- رویداد activity_pause اجرا میشه.

وقتی به یه اکتیویتی که بسته نشده و در حال فریز قرار داره برگردیم دیگه رویداد activity_create اجرا نمیشه و فقط activity_resume  اجرا میشه.

 

وقتی میخوایم ببینیم مثلا اکتیویتیی با نام Test در حال اجرا هست یا نه از این کد استفاده میکنیم.

IsPaused(Test)
لینک ارسال
به اشتراک گذاری در سایت های دیگر

 

وقتی اکتیویتی بسته هست و باز میشه اول رویداد activity_create اجرا میشه بعد activity_resume

وقتی اکتیویتی بسته نشه اما بره تو حالت فریز-مثلا وقتی دکمه home رو تو گوشی بزنیم- رویداد activity_pause اجرا میشه.

وقتی به یه اکتیویتی که بسته نشده و در حال فریز قرار داره برگردیم دیگه رویداد activity_create اجرا نمیشه و فقط activity_resume  اجرا میشه.

 

وقتی میخوایم ببینیم مثلا اکتیویتیی با نام Test در حال اجرا هست یا نه از این کد استفاده میکنیم.

IsPaused(Test)

ممنون عالی بود

ولی متاسفانه کد زیر وقتی برای اولین بار اجرا میشه و حتی وقتی برنامه اجرا شده هوم رو میزنیم و باز اجراش میکنیم is not paused هست 

از هر ده بار ی بار درست کار میکنه 

	If IsPaused(actmain2) = False Then
ToastMessageShow("is paused",False)
CallSub(actmain2,skipsplash)
Return
Else
ToastMessageShow("is not paused",False)

End If 
لینک ارسال
به اشتراک گذاری در سایت های دیگر

False رو با true جایگزین کنین.

وقتی صفحه در حال اجرا باشه این کد false رو بر میگردونه.

Sent from my Hol-U19 using Tapatalk

لینک ارسال
به اشتراک گذاری در سایت های دیگر

False رو با true جایگزین کنین.

وقتی صفحه در حال اجرا باشه این کد false رو بر میگردونه.

Sent from my Hol-U19 using Tapatalk

بله این کارو قبل پست دادن کردم

طبق توضیحش ک میاره میگه اگه تاحالا اجرا نشده باشه اکتیویتی true بر میگردونه و اگه اجرا شده باشه و pause شده باشه false بر میگردونه 

 

متاسفانه گویا اعتباری بهش نیس 

activity.finishe رو اجرا کردم و اکتیویتی main بسته شده ولی وقتی برنامه رو میبرن رو pause و برن رو آیکون برنامه کلیک کنن ispaused(act2) که مثلا درحال اجرا هست و فریز شده ، ولی این دستور میگه اجرا نشده 

 

من مشکلو به شکل دیگه حل کردم ولی میخواستم این روش هم به نتیجه برسه

 

درضمن در رویداد create اکتیویتی main من چکش میکنم که ببینم اکتیویتی دومم درحال اجرا هست یا نه 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

من زیاد با این کد کار کردم درست کار میکرد همیشه.

احتمالا یه جای کار میلنگه ولی الان مطمعنن وقت خوابه و توضیحاتتونو زیاد متوجه نشدم.

شب خوش.

Sent from my Hol-U19 using Tapatalk

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...