Persian Software Engineers – Telegram
Persian Software Engineers
1.9K subscribers
353 photos
14 videos
84 files
303 links
تجربیات شخصی یک مهندس نرم افزار در آلمان‌.
کانال یوتیوب:
https://www.youtube.com/@Dev_Germany
ادمین کانال :
@mohamad_germany
Download Telegram
خب در نهایت چیزی که دارم شکل زیر است. البته تمام نشده میخواهم نقویم فارسی و انتخاب عکس و.. هم بذارم که ایشالا جلسه بعد
خسته نباشید
Persian Software Engineers
سلام دوستان یه فرم نظر سنجی درست کردیم که نظرات دوستان رو در مورد کانال و بهتر شدنش بدونیم لطفا همه شرکت کنین ممنونم http://goo.gl/forms/uZLR9MrMfv
با تشکر از خانم مقاری بابت آموزش خوبشون طبق نظر سنجی که از دوستان انجام شد قرار شد آموزش ها به صورت جلسه ای و پی دی اف باشه ولی هر دفعه خیلی از دوستان لیو می دن ! ما طبق نظر اکثریت جلو رفتیم و همینجوریم ادامه میدیم ! اگر نظر دوستان در مورد گذاشتن دوره آموزشی ساخت کتاب با b4a موافقه در فرم بالا و یا به صفحه ی شخصی من @mohamadghaffari پیام بدن اگر تعداد نظرات مثبت زیاد بود حتما قرار داده میشه ممنون از حمایتتون
@androiddevelop
بالاخره نسخه جدید تلگرام اومد ! حتما نصب کنین تا بتونین وارد گروه کانال بشین .
@androiddevelop
از جمله تغییرات ورژن جدید :
●هزار نفره شدن گروه و چند ادمینه شدن .
●اضافه شدن دکمه اشتراگ گذاری سریع در کنار هر مطلب کانال
نکته:اگر یک گروه که الان 200 نفرس رو تبدیل به Supergroup و هزار نفرش کنین اعضا به محتوای قبلی فقط دسترسی دارن و باید نسخه جدید رو برای دسترسی به مطالب جدید گروه نصب کنند .
@androiddevelop
دانلود از پلی استور:
https://play.google.com/store/apps/details?id=org.telegram.messenger
Persian Software Engineers
Telegram@androiddevelop.apk
فایل Apk نسخه ی جدید تلگرام .اختصاصی از Android Develop لطفا تو گروهاتون فروارد کنین و اعضا حتما همه نصب کنند تا بتونن وارد گروه بشن .
گروه تخصصی و پرسش و پاسخ اندروید کانال
لینک ورود:
https://telegram.me/joinchat/B1f7EQKuZgkzleEuiXdD6w
توجه:برای عضویت حتما تلگرام خودتونو آپدیت کنین .
قوانین و نکات قابل توجه :
1-لطفا اول به هر مشکلی ک خوردین در گوگل سرچ کنین و اگر به نتیجه نرسیدین در گروه سوالتونو مطرح کنین و صبر کنین تا دوستان جواب بدن.
2-هر گونه تبلیغات در گروه ممنوع می باشد .
3-سوالاتو در قالب یک پیام و با هشتگ #سوال ارسال کنین تا هم باعث اسپم شدن گروه نشین هم سوال و جواب های درست خودشون یه منبع آموزنده و مفید برای بقیه اعضا می تونه باشه.جواب ها هم با هشتگ #پاسخ گذاشته بشه.
4-حتما برنامه نویسان محترم هم بیان تا بتونن به دوستان کمک کنن و این نکته رو در نظر داشته باشین که دوستان وظیفه پاسخ گویی ندارن و لطف می کنن پاسخ میدن !
انشا... گروه هم آموزنده و مفید باشه و همه دوستان قوانین رو رعایت کنند! موفق باشین .
فایل pdf آموز جلسه نهم. 📕📖
سلام دوستان جدید خوش اومدین مطالب قبلی در
@androidi_bot
موجود است و در مورد آموزش ها چون هر آموزش اختصاصی است واقعا زمان بره لطفا صبور باشین ! آموزش بعدی امروز قرار داده میشه در مورد عیب یابی و بررسی دلایل force close دادن برنامه ها .
دوستان لطفا همه تلگرام خودتونو اپدیت کنین تا دقایقی دیگر گروه تبدیل به سوپر گروپ میشه .و فقط افرادی ک آپدیته تلگرامشون می تونن دسترسی داشته باشن .
از مزایای سوپر گروپ :
حذف کردن چتای اضافه برای همه اعضا یعنی یه پیامو ک مدیر پاک کنه برا همه پاک میشه و فقط مطالب مفید می مونه .
2- بلک لیست :
افراد مخرب وارد بلک لیست میشن و دیگ با لینکم به گروه دسترسی ندارن .
3-گروه پیشفرض Mute میشه .
4-افراد جدید به مطالب قبلی دسترسی دارن کاملا .
گروه تبدیل به سوپر گروپ شد !
لینک جدید :
https://telegram.me/joinchat/B1f7ETv_ZoJDk2dr0ES0rQ
در صورت عدم رعایت قوانین بدون اخطار وارد بلک لیست میشین ! پس لطفا قوانینو رعایت کنین ممنون .مطالب اضافه هم پاک شدند.
سلام شرمنده دوستان که دیر شد واقعا چند ساعته دارم برای مقاله کار می کنم و الان تقریبا به سطح مطلوب رسید . فقط لطفا هنگام گذاشته شدن مقاله لیو ندین و گروه رو mute کنین چون ما داریم رایگان برای شما زحمت می کشیم شما هم ما رو حمایت کنین با معرفی کردن به دوستان و لیو ندادن !
یکی از مشکلات بزرگ برنامه نویسان به خصوص برنامه نویسان اندروید دادن force close توسط برنامه شان است. ! این ارور در زمان Runtime اتفاق میافتد یعنی در هنگام اجرای برنامه و برای همین handle کردنش سخت تره مخصوصا برای افراد تازه کار همچنین ممکنه فقط در بعضی گوشی ها مخصوصا گوشی های با رم پایین برنامتون force close بشه ! و حتی خودتون خبر نداشته باشین . اما همه ی این موارد رو میشه مدیریت کرد که در ادامه توضیح می دیم .
دلیل اول که بررسی می کنیم (LargeHeap ) : در قسمت #اعماق_اندروید در مورد Stack و پشته صحبت کردیم و نحوه ی اختصاص دادن استک های جدا به هر اکتویتی رو گفتیم . همین پشته یکی از دلایل force close شدن برنامه ما در گوشی های با رم پایین است . که خودم ماه ها این مشکل رو داشتم و بالاخره پیدا کردم دلیلشو ! اگر در یک اکتویتیون عکسهای زیادی رو بذارین یا حجم هر عکس زیاد باشه در گوشی های با رم پایین معمولا و یا در نسخه های اندروید مختلف ! چون به هر دو مورد بستگی داره برنامتون وقتی وارد اون اکتویتی میشین force close میشه و شما هیچ ایده ای برای حل این مشکل ندارین. دلیلش اینه که این عکس ها یا عکس باعث پر شدن استک اختصاص یافته به اون اکتویتی میشه و خود سیستم عامل برنامتونو می بنده تا به خودش فشار نیاد ! (دستش درد نکنه :) ) حالا شما دو راه دارین :1- همه یعکس هاتونو ریسایز کنین و حجمش رو بیارین پایین من برنامه ی AnyPic Image Resizer رو به شما پیشنهاد می کنم. چون خودم راضیم . و این راه اصولیش هست .2-شما مجبورین به دلایل مختلف همین سایز رو داشته باشین یا با پایین آوردن حجم ها بازم ارور پا برجاست ! حالا کارهای زیر رو انجام بدین ! :
1-وارد AndroidManifest.xml بشین و در تگ <application> بیاین android:largeHeap="true" رو اضافه کنین . توجه داشته باشین برای دستگاه های با Api Level +11 فقط این ویژگی کار می کنه .
دلایلی که این کار اصولی نیست اینه :
1-هیچ تضمینی که مقدار Heap یعنی استک شما چه مقدار افزایش بیابه نیست ! .
2-شما یا این کار سیستم عامل رو مجبور می کنین که برنامه های دیگه رو که در رم هستن رو ببنده پروسشون رو تا رم مورد نیاز برای برنامه ی شما آزاد بشه !
3-ممکنه بعدا دسترسی ای برای این موضوع جداگونه اضافه بشه و یا کابر موقع نصب بهش اخطارداده بشه .
اگر چاره ای نبود این کارو بکنین ولی در انتها ما روشی رو برای بهبود رم توسط دیباگ کردن برنامه رو بهتون می گیم.
2 -دومین مشکلی که می تونه باعث force close شدن برنامتون بشه Intent ایه که مشکل داره !
می دونین که یکی از وظایف Intent ها تبادل اطلاعات بین اکتویتی هاست حالا اگر در اکتیویتی اول اطلاعاتی ر به دومی بخواین بفرستین و درست نفرستین برنامتون force close میشه نمونه عملی و روش حل :
کد اشتباه
اکتویتی اول :
String resultString = Double.toString(result);
Bundle packet = new Bundle();
packet.putString("giveResults", resultString);
Intent a = new Intent(MainActivity.this, Display.class);
startActivity(a);
اکتویتی دوم :
Bundle getPacket = getIntent().getExtras();
result = getPacket.getString("giveResults");
tvResult.setText(result);
در اینجا در اکتویتی اول یک Bundle تعریف شده و یه Instance ازش ساخته شده و سپس در اون یه رشته وارد شده. Bundle مثل یه بقچه می مونه که شما اطلاعاتو به روش key/value توش می ریزی (روش key/value یک روش ذخیره سازی اطلاعاته که با فراخوانی key که همون شناسه اطلاعاته مورد نظره value یعنی مقدار اون داده برگشت داده میشه است در SharedPreferences هم ازش استفاده می شه ). و در اکتویتی دوم میای از اون بقچه برش میداری ! حالا اشتباه کجاست ؟ getIntent().getExtras(); یعنی تمام اینت ها رو بگیر و سپس داخل Extra هاشو نگاه کن ! اما ما اطلاعاتو تو Bundle ریختیم اما موقع استارت Intent بهش پاس نکردیم. تا بتونیم از ش استفاده کنیم و شکل صحیح به صورت زیر خواهد بود.
Intent a = new Intent(MainActivity.this, Display.class);
a.putExtras("giveResults",packet );
startActivity(a);
که به وسیله ی putExtra میتونیم تو اکتیویتی دوم getExtra کنیم :)
مورد سوم که از همه مهم تره رو گذاشتیم آخر که کامل روش مانور بدیم 😊 NullPointerException :
این مورد یکی از شایع ترین دلایل force close شدن برنامست و هم در برنامه نویسی اندروید و هم در نوشتن برنامه های ویندوزی با جاوا زیاد رخ میده ! اول اندرویدش و بعد جاواش که مکمل هم هستند رو توضیح می دیم.
در سایت developer.android.com که مرجع اصلی هست در بخش Develop - > Reference - >NullPointerException اول جمله ی زیر رو می بینین :
public class
NullPointerException
extends RuntimeException
یعنی یک کلاس از نوع public که از RuntimeExceptions ارث بری شده . خب RuntimeExceptions هم که یک سوپر کلاس برای این حساب میشه و این کلاس ما Subclass اش هست به معنی انتظارات در زمان اجرا هست ! یعنی انتظاراتی که ما داریم و معمولا بر خلافش اتفاق میوفته !
بررسی اجمالی کلاس : وقتی که برنامه سعی می کنه به یک فیلد یا متد یک آبجکت یا یک المنت از یک آرایه دسترسی پیدا کنه وقتی که هیچ نمونه یا آرایه ای برای دسترسی وجود نداره ! و باعث میشه اون آبجکت یا آرایه به null اشاره کنه . و اون خطا رخ بده و همچین چیزی رو د ر LogCat مشاهده می کنین....Caused by: java.lang.NullPointerException