آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

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

GOOD  10 سال پیش  10 سال پیش
0 0

من میخواهم برنامه ام هنگامی که دکمه هوم رو میزنم یا صفحه گوشی رو خاموش میکنم به کار خودش ادامه بده چه کاری باید بکنم؟

0 0
میتونید از Service ها استفاده کنید البته خود من اطلاعات زیادی از سرویس ندارم ولی راه حلش سرویس ها هستن (10 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
Mohammad Vp  10 سال پیش
+1 0

با استفاده از سرویس (Service) در برنامه نویسی اندروید، می توانیم یک سری عملیات ها (یک سری کد) را مستقل از خود برنامه اندروید، اجرا کنیم. یعنی دیگر حتی هنگامی که برنامه اندروید ما، در گوشی کاربر در حال اجرا نیست (بسته است) نیز می توانیم یک سری عملیات را اجرا کنیم، مثل دانلود فایل، نمایش پیام هایی به کاربر و ... .

در واقع، کدهای سرویس (Service)، در یک Thread مجزا از خود برنامه اندروید (application) اجرا می شوند و بنابراین نیازی نیست که حتما کاربر در حال اجرای برنامه اندروید (application) باشد و ظاهر گرافیکی تعاملی (user interface) آن را ببیند. مثلا کاربر وارد برنامه اندروید می شود، بر روی دکمه دانلود یک فایل از اینترنت اشاره می کند و در حین دانلود فایل، از برنامه اندروید خارج می شود، اگر کدهای دانلود فایل، به صورت معمولی نوشته شده باشند، دانولد فایل متوقف می شود، اما اگر کدها را با استفاده از سرویس (Service) اجرا کرده باشیم، دیگر مستقل از برنامه اندروید، دانلود فایل ادامه می یابد.

اکنون نحوه ساخت یک سرویس (Service) برای برنامه اندروید را شرح می دهیم.

ابتدا باید در پروژه اندروید، یک کلاس (class) برای سرویس بسازیم که بر اساس توسعه کلاس service خواهد بود. ساختار کدهای این کلاس (class) را به صورت زیر می نویسیم :

 public class MyService extends Service {
    
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        // your code
        return Service.START_FLAG_REDELIVERY;
    }
 
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
 
}

در کد بالا، نام کلاس (class) را برابر MyService در نظر گرفته ایم که بر اساس توسعه (extends) کلاس Service ساخته می شود :

 public class MyService extends Service {

کدهایی که قصد داریم توسط سرویس (Service) اجرا شود (حتی در زمانی که برنامه اندروید، باز نباشد) را باید به جای عبارت // your code بنویسید.

سپس باید در فایل AndroidManifest.xml اعلام کنیم که برنامه شامل این سرویس (Service) می باشد. بنابراین باید کدهای زیر را در فایل AndroidManifest.xml و درون تگ application قرار بدهیم (نام سرویس را باید در این کدها ذکر کنیم) :

 <service android:name="MyService" >
</service>

به عنوان مثال، موقعیت قرارگیری آن را در کدهای زیر نمایش داده ایم (مثالی برای کدهای فایل AndroidManifest.xml) :

 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.UNCOX.com"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />
   
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.UNCOX.com.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.UNCOX.com.NextActivity"
            android:label="@string/title_activity_next" >
        </activity>
        <service android:name="MyService" >
        </service>
    </application>

</manifest>

اکنون در محلی از برنامه اندروید (در هر Activity دلخواه) و یا بعد از هر عملی که کاربر انجام می دهد و قصد داریم که بعد از آن، کدهای سرویس (Service) اجرا شوند، باید با کدهای زیر، اعلام کنیم که سرویس (Service) اجرا شود :

 Context context = getApplication();
Intent intent = new Intent(context, MyService.class);
context.startService(intent);

و یا به شکل ساده تر زیر :

 
Intent intent = new Intent(this, MyService.class);
startService(intent);

بنابراین کدهای سرویس (Service) اجرا می شوند و حتی با خروج کاربر از برنامه اندروید نیز، اجرای کدهای سرویس، متوقف نخواهد شد.

موفق باشید دوست عزیز...

+1 0
بسیار ممنون (10 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .