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

طریقه ساخت CustomBroadCast (آموزش)

Hajhosseini  8 سال پیش  8 سال پیش
+11 0

اول یک توضیح کلی در مورد BroadCast ها میدم.
زمانی هست که شما میخوای از جایی (مثلا یک receiver) که به هیچ اکتیویتی دسترسی ندارید و هیچ راهی برای پیداکردن اکتیویتی و فرگمنت ها وجود نداره، دسترسی ایجاد کنید. BroadCast یک پیغامه که در تمام اپلیکیشن ارسال میشه، هرجا که لیستنرش تعریف شده باشه و در انتظار باشه اونو دریافت میکنه. مثلا شما اگر توی اپلیکیشنتون مسنجر (پیامک) داشته باشید حتما باید از این نوع BroadCast یا Receiver ها استفاده کنید. (در بعضی موارد برای تغییر چند فرگمنت یا ... نیز مورد استفاده قرار میگیره ولی لزوما در این موارد بهترین راه نیست. (در این مورد میشه اکتیویتی رو ریستارت کرد، فرگمنت رو ریستارت کرد، به فرگمنت دسترسی پیدا کرد و مقادیر مورد نیاز رو عوض کرد و ... . خلاصه بستگی به سبک کدنویسیتون داره))

برای ساخت CustomBroadCast مراحل زیر رو طی کنید:

۱- ابتدا جایی که تغییری انجام شده، (مثلا زمانی که پیامک رو دریافت کردید) کد زیر رو مینویسید تا BroadCast به تمام بخش های اپلیکیشن ارسال شود.

 Intent intent = new Intent("SMS_RECEIVED");
                intent.putExtra("SMS_BODY",body);   //  در این قسمت میتونید پارامتر ارسال کنید
                myContext.sendBroadcast(intent);   // به جای کانتکست میتونید از اکتیویتی هم استفاده کنید

۲- تعریف BroadCast در مقصد (جایی که میخواید تغییرات انجام بشه)

 private BroadcastReceiver receiver;
@Override
    public void onViewCreated(final View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        IntentFilter filter = new IntentFilter();
        filter.addAction("SMS_RECEIVED");
receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { change(); // you can change your methodes here } }; getActivity().registerReceiver(receiver, filter); } @Override public void onDetach() { super.onDetach(); try { getActivity().unregisterReceiver(receiver); }catch (Exception e){ e.printStackTrace(); } System.gc(); }
+2 0
با تشکر از اقای حاج حسینی ... دوست دارم بدونم دلیل صدا زدن Garbage Collector چی بوده؟ با توجه به اینکه صدا زدنش پیشنهاد نمیشه!! (8 سال پیش)
+3 0
در پروژه ای نیاز بود کمترین میزان از حافظه رو اشغال کنیم. با توجه به اینکه این خط کد ممکنه پروژه رو نابود کنه و بارها کرش اتفاق بیوفته اصلا پیشنهاد نمیکنم قرارش بدید. ولی اگر همه کیس های ممکن رو پوشش بدید تاثیر مثبتی توی استفاده از حافظه داره. (8 سال پیش)
0 0
سلام یه سوال من شنیدم تو جاوا Garbage Collector خودش انجام میشه؟ اشتباه شنیدم یا نه؟ (8 سال پیش)
+1 0
توی اکتیویتی ها انجام میشه ولی توی فرگمنت خیر. باز بستگی به ساختاری پیاده سازیتون داره. (8 سال پیش)
 برای این سوال پاسخی وجود ندارد.

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