همیشه قوانین نانوشتهای وجود دارند که اگر تجربهی کمی داشته باشیم ممکن است برایمان دردسر ساز شوند و ساعتها ما را درگیر خود کنند.
اگر این مطلب را میخوانید احتمالا با مشکل توقف اجباری (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
این راهحل برای شما جوابگو بود؟ چه راه دیگری را برای رفع چنین مشکلی میشناسید؟