همیشه قوانین نانوشتهای وجود دارند که اگر تجربهی کمی داشته باشیم ممکن است برایمان دردسر ساز شوند و ساعتها ما را درگیر خود کنند.
اگر این مطلب را میخوانید احتمالا با مشکل توقف اجباری (Force Close) در اندروید مواجه شدهاید؛ این مشکل اگر هنگام نمایش ویدیوی تبلیغاتی یا پرداخت درون برنامهای رخ بدهد احتمالا مشکل از برنامهنویسی شما و وجود خطا (Exception) نبوده است.
دلیل این مشکل، به صورت تجربی مشخص شده و در فرومهای مختلف، داکیومنت تپسل و توسعهدهندگان کافهبازار مشاهده نشده؛ پس احتمال این که راه حل صددرصدی مشکل نباشد وجود دارد ولی در نمونههای تست شده توانسته را مشکل را رفع کند.

همه چیز به خاطر چرخش است
اگر بازی شما افقی (Horizontal) باشد هنگام درخواست خرید درون برنامهای از مارکتی مثل کافهبازار ممکن است این خطا رخ بدهد چرا که پرداخت مارکتها معمولا عمودی (Portrait) است و این چرخش ناگهانی اگر در برنامه (بازی یا اپلیکیشن) پیشبینی نشده باشد باعث توقف اجباری برنامه خواهد شد.
همچنین اگر بازی شما عمودی باشد و قصد داشته باشید ویدیوی جایزهای (تبلیغاتی) مشاهده کنید با توجه به اینکه تبلیغات ویدیویی معمولا افقی هستند بازهم درخواست چرخش صفحهنمایش اگر پیشبینی نشده باشد منجر به توقف اجباری برنامه میشود.
راهحل چیست؟
راهحل این مشکل اضافه کردن یک اتریبیوت جدید به فایل اندروید مانیفست (android manifest) است.
android:configChanges="orientation|screenSize"
برای رفع مشکل کافی است کد فوق را به یکی از اکتیویتیهای (activity) فایل اندروید مانیفست، (ترجیحا مرتبط به صفحهنمایش) اضافه نمایید.
مثال:
<activity android:name="com.bazaar.BazaarIABProxyActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" android:configChanges="orientation|screenSize" />
راستی، ممکنه بخواهید بیشتر و اصولیتر در مورد این موضوع بخوانید برای همین لینکهایی که ممکن است به شما در شناسایی این مشکل به شما کمک کند را در ادامه قرار میدهیم.
pspdfkit.com: What Are Configuration Changes
jlelse.eu: Handling Orientation Changes in Android
android.com: Handle configuration changes
این راهحل برای شما جوابگو بود؟ چه راه دیگری را برای رفع چنین مشکلی میشناسید؟
برای اطلاعات بیشتر، پیشنهاد میکنیم چرا نباید هر بازی موبایل یا اپلیکیشنی را روی دستگاه خود نصب کنیم؟! را مطالعه کنید. همچنین میتوانید به اهمیت فرهنگ تصمیمگیری دادهمحور در پروژههای بازیسازی نگاهی بیندازید.
FAQ
چرا بازی من در هنگام نمایش ویدیو تبلیغاتی متوقف میشود؟
مشکلات مرتبط با تطابق وضعیت صفحه و درخواستهای خرید درونبرنامهای میتواند دلیل اصلی توقف ناگهانی بازی باشد.
چگونه میتوانم از بروز مشکل توقف اجباری جلوگیری کنم؟
با اضافه کردن تنظیمات مناسب به فایل اندروید مانیفست و آزمایش کدها پیش از اجرا میتوانید از بروز این مشکل جلوگیری کنید.
آیا این مشکل تنها در بازیهای خاصی رخ میدهد؟
این مشکل ممکن است در هر بازیای که ویدیو یا خرید درونبرنامهای دارد، رخ دهد؛ بنابراین توسعهدهندگان باید به این مشکل توجه داشته باشند.
جدول زیر به مقایسه فاکتورهایی که میتوانند بر روی توقف اجباری تاثیر بگذارند، کمک میکند.
| فاکتور | تأثیر | راهحلهای پیشنهادی |
|---|---|---|
| وضعیت صفحه | ممکن است منجر به بروز خطا شود | تنظیمات تطابقی را اضافه کنید |
| کدهای برنامهنویسی | احتمال بروز باگ | کدها را مرتباً بررسی کنید |
| نسخه نرمافزار | مشکلات سازگاری | بهروزرسانی منظم |
| تحلیل فیدبکها | شناسایی مشکلات ناشناخته | تست با استفاده از بازخورد کاربران |




