پرش به مطلب اصلی

اپ‌های Multi-Process

اپلیکیشن‌های Android می‌توانند از یک یا چند پردازش تشکیل شوند. می‌توانید انتخاب کنید که service ها یا activity های خود را در پردازش دیگری غیر از اصلی اجرا کنید. این را با تنظیم property android:process در تعریف پردازش یا activity در فایل manifest Android پیاده‌سازی می‌کنید.

<activity
android:name=".YourActivity"
android:process=":YourProcessName">
</activity>
<service
android:name=".YourService"
android:process=":YourProcessName">
</service>

با تعریف service ها یا activity های خود به این شکل، آن‌ها را مجبور می‌کنید در یک پردازش متفاوت از پردازش اصلی اجرا شوند.

به طور پیش‌فرض، نام پردازش اصلی شما با نام بسته اپ شما یکسان است. اگر نام بسته اپ شما com.example.myapp باشد، این نام پردازش اصلی شما نیز خواهد بود. در این صورت، YourActivity و YourService در پردازشی به نام com.example.myapp:YourProcessName اجرا می‌شوند.

Adtrace SDK در حال حاضر ردیابی از بیش از یک پردازش در یک اپ را پشتیبانی نمی‌کند. اگر از چندین پردازش در اپ استفاده می‌کنید، باید نام پردازش اصلی را در شیء AdTraceConfig تنظیم کنید.

String appToken = "{YourAppToken}";
String environment = AdTraceConfig.ENVIRONMENT_SANDBOX; // یا AdTraceConfig.ENVIRONMENT_PRODUCTION

AdTraceConfig config = new AdTraceConfig(this, appToken, environment);
config.setProcessName("com.example.myapp");

AdTrace.onCreate(config);

همچنین می‌توانید نام پردازش اصلی خود را با تغییر property android:process در application در فایل manifest Android تغییر دهید.

<application
android:name=".YourApp"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:process=":YourMainProcessName">
</application>

اگر پردازش اصلی خود را این‌گونه نام‌گذاری کنید، باید نام پردازش اصلی را در شیء AdTraceConfig به این شکل تنظیم کنید:

config.setProcessName("com.example.myapp:YourMainProcessName");

این به SDK ما نام پردازش اصلی شما را اطلاع می‌دهد تا SDK در هیچ پردازش دیگری که ممکن است سعی کنید از آن استفاده کنید مقداردهی اولیه نشود. اگر سعی کنید از SDK در پردازش دیگری استفاده کنید، پیام لاگ زیر را دریافت خواهید کرد:

05-06 17:15:06.885    8743-8743/com.example.myapp:YourProcessName
I/AdTrace﹕ Skipping initialization in background process (com.example.myapp:YourProcessName)

اگر نام پردازش اصلی خود را در شیء AdTraceConfig تنظیم نکنید و سعی کنید SDK را در چندین پردازش فراخوانی کنید، چندین نمونه مختلف SDK را مقداردهی اولیه خواهید کرد، زیرا پردازش‌های مختلف در Android فضای حافظه یکسان را به اشتراک نمی‌گذارند. این می‌تواند منجر به رفتار غیرقابل پیش‌بینی شود، بنابراین اکیداً توصیه می‌کنیم همیشه نام پردازش اصلی خود را تنظیم کنید یا اطمینان حاصل کنید که از Adtrace SDK در بیش از یک پردازش در اپ استفاده نمی‌کنید.