کلیدستان

نسخه‌ی کامل: اجرای اکتیویتی در پس زمینه (در برنامه نویسی اندروید)
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام خسته نباشید من میخاستم بدونم چجوری میشه برنامم اجرا بشه بعد با زدن یک دکمه برنامه بسته نشه اما در پس زمینه در حال اجرا باشه و بعد از یه مدت خاص یه کاری انجام بشه و مثلا یه اکتیویتی دیگه اجرا بشه

من خودم این کد رو داخل لیسنر باتن گذاشتم و جواب داد اما میخاستم بدوونم ایا این مشکلی داره یا که همینو تو پروژم استفاده کنم

کد پی‌اچ‌پی:
finish();
                try {
                    
Thread.sleep(5000);
                    
                }
                catch (
InterruptedException e) {
                    
// TODO Auto-generated catch block
                    
e.printStackTrace();
                }
                return;
                
Intent intent = new Intent(getApplicationContext(), Activity.class);
                
startActivity(intent); 

ممنون
دوست عزیز منظورتون از پس زمینه دقیق چیه؟
این دستوری که شما نوشتید.
ابتدا با دستور
کد پی‌اچ‌پی:
finish(); 
اکتیویتی که درآن هستید از بین میره..بعد ش سعی میکنه  5ثانیه درحالت به اصطلاح sleep یعنی خوابیدن باشه...
بعدش اینکه 5 ثانیه مکث کرد
اکتیوتی دیگه شروع به آغاز میکند..
این کاریی هست که دستور شما انجام میده..حالا نمیدونم همچین هدفی میخواید داشته باشید یانه.
سلام.
می توانید از سرویس (Service) استفاده کنید (در کل، برای اجرای کد در پس زمینه، سرویس را به کار ببرید، حالا یا در برنامه اندروید هستیم یا اینکه حتی برنامه اندروید بسته باشه)(Activity اگر به پس زمینه برود، یا در حالت Pause است یا در حالت Stop و در پس زمینه، نمی توان کدی در آن اجرا کرد) :

کلید شماره 2609

http://www.kelidestan.com/keys/categorie...ategory=36

یعنی شما در Activity ، سرویس را شروع می کنید تا کدهای آن اجرا شوند، بعد کد مربوط به خارج شدن از برنامه اندروید را اجرا می کنید (منظورم در خود Activity است، یعنی اول کد شروع سرویس و بعد کد خروج از برنامه اندروید را خواهیم داشت) تا به محض شروع سرویس، از برنامه اندروید خارج شویم. تا اینجا، برنامه در دید کاربر نیست و کدهایمان نیز در سرویس در حال اجرا هستند. پس برای بازگشت به خود برنامه اندروید، باید در انتهای کدهای سرویس، تعیین کنید که برنامه اندروید باز شده و به همان Activity (یا هر Activity دلخواه دیگر) وارد شویم، یعنی با پایان اجرای کدهای سرویس، وارد برنامه اندروید می شویم (تا مثلا پیامی نمایش داده شود یا ...).

--------------------------------------------------

یک حالت دیگر :
اگر بخواهیم از Activity خارج نشویم و حین نمایش یک سری پیام (مثلا نمایش ProgressBar)، یک سری کد در پس زمینه Activity اجرا شوند (در اینجا منظورمان از پس زمینه Activity ، خارج از Thread اصلی برنامه اندروید و با یک Thread جدید می باشد، ولی همچنان در Activity هستیم)، می توانیم از AsyncTask استفاده کنیم. یک مثال از AsyncTask :

کلید شماره 312

ممنون از راهنماییتون اما من میخاستم بین کد های سرویس وقفه بدم با sleep اما اینجا خود اکتیویتی من وقفه میوفته
ینی میخاستم برنامه با زدن دکمه از برنامه بیاد بیرون و هر 5 ثانیه یک بار یه پیغامی رو نشون بده اما من در اینجا نمیتونم این کاررو بکنم
میشه کمکم کنید
(۱۳۹۳/۱۲/۲۱, ۱۰:۱۵ ب.ظ)'alerji' نوشته: [ -> ]ممنون از راهنماییتون اما من میخاستم بین کد های سرویس وقفه بدم با sleep اما اینجا خود اکتیویتی من وقفه میوفته
ینی میخاستم برنامه با زدن دکمه از برنامه بیاد بیرون و هر 5 ثانیه یک بار یه پیغامی رو نشون بده اما من در اینجا نمیتونم این کاررو بکنم
میشه کمکم کنید

 


کد مربوط به وقفه را در خود کدهای سرویس بنویسید (چون شما قصد دارید که وقفه در اجرای کد سرویس باشند، نه Activity).
کد مناسب برای ایجاد وقفه در سرویس را یافته و آن را در خود سرویس بنویسید.

البته برای اجرای یک سری کد، به صورت هر چند ثانیه یک بار، باید کلید زیر را بخوانید :

کلید شماره 2861

نکته مهم :
ممکن است بخواهیم کدهایی که قبلا آنها را در Activity تست کرده ایم را این بار در یک سرویس اجرا کنیم، اما با پیام خطا روبرو شویم، این مسئله به دلیل تفاوت هایی است که باید در کدنویسی آنها در سرویس رعایت شود که معمولا با تجربه می توان آنها را متوجه شد (تذکر دادم که اگر با خطا روبرو شدید، فکر نکنید اصل کد مشکل داره).

سلام و عرض ادب
ببخشید اگه بخواهیم یه سرویس بعد از خاموش و روشن شدن تلفن همراه باز اجرا بشه چیکار باید بکنیم؟
باید از bottcomplite revicer
استفاده کنی
(۱۳۹۵/۰۱/۲۱, ۱۱:۳۷ ق.ظ)ail603601 نوشته: [ -> ]باید از bottcomplite revicer
استفاده کنی

مرسی علی جان فدات