رفتن به مطلب
  • 0

استفاده از اکتیویتی های زیاد یا پنل های زیاد ؟؟


rasool.g

سوال

برای قسمت های مختلف برنامه بنظر شما بهتره از اکتیویتی های مختلف استفاده کنم یا پنل های مختلف. به این شکل که پنلی که لازم دارم رو نمایان و بقیه رو مخفی کنم. یا ترکیبی از هردو ؟

از نظر سرعت سوئیچ بین صفحات و مصرف رم بنظرتون کدوم بهتره ؟

فرض کنید برنامه قسمت های مختلف و صفحات مختلف زیادی داره.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

10 پاسخ به این سوال تاکنون داده شده است

ارسال های توصیه شده

در در 1396/05/09, 11:12:28، مجید آرتا گفته است :

 

Async : اینم هم AriaAsyncTask  مون هستش.

نکته بعدی اینکه روی حالت Release  بزارید چون Thread  ها رو این حالت اجرا میشن و روی Debug  برنامه هیچ دیتایی رو به وسیله Thread تعریف شده نمایش نمیده.

نکته بعد هم بنده عکسایی که توی برنامه هستش رو پاک می کنم شما خودتون عکس به برنامه بدید و تست کنید، و سعی کنید عکسایی با حجم و رزولیشن بالا هم بدید تا از لحاظ Performance  هم برنامتون تستی بشه.

 

رمز فایل » answercenter.ir

LoadImagesWithThread.zip

سلامی دوباره 

مجید جان من میخوام این کدهام توی بک گراند Async  انجام بشه منتها چون تو این قسمت نمیشه به ui دسترسی داشت این قست اصلا کار نمیکنه ارورnull میده

Sub Async_DoInBackground(Params() As Object) As Object
listfontFarsi=File.ListFiles(File.DirRootExternal&"/farsifonts")

sc2.Panel.RemoveAllViews
	left2 = 43%x
	sc2.Panel.AddView(btnFa,1%x,1%x,13%x,11.5%y)
	sc2.Panel.AddView(btnen,15%x,1%x,13%x,11.5%y)
	sc2.Panel.AddView(btnfov,29%x,1%x,13%x,11.5%y)

	For ER = 0 To listfontFarsi.Size-1
		
		Dim Lfont As Label
		Lfont.Initialize("Lfont")
		sc2.Panel.AddView(Lfont,left2,1%x,20%x,11.5%y)
		Dim tf As Typeface =textEffect. LoadTypefaceFromFile(File.DirRootExternal&"/farsifonts",listfontFarsi.Get(ER))
		Lfont.Typeface = tf
		Lfont.Tag=listfontFarsi.Get(ER)
		Lfont.Gravity=Gravity.CENTER
		Lfont.Color=Colors.Red
		Lfont.TextColor=Colors.White
		Lfont.Text=lbl(mc.getsecurInt("lbltag",0)).As_Label.Text
		left2 = left2 +21%x
		
	Next
End Sub

توی ترد هم نفهمیدم چی رو کجا بذارم میشه کمکم کنی؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

ببینید شما توی Async  بیا لیست فونتهارو توی DoInbackground بگیرید و به صورت یک List  اینهارو Return  کنید.

بعد توی متد OnPostExcute شما لیست رو بخون و اونجا ویوهات رو بساز.

ترد هم تفاوت چندانی نداره، شما لیست فونت رو میگیرید میدیدبه تابعی که Start  میشه، بعد لیست گرفته شده رو بخوایید توی ui  بزارید با با ترد و تابع RunOnGui  تابعی که مربوط به بایند کردن دیتا روی ui  هستش رو صدا میزنه که شما میایی توی این تابع ویو هاتو میسازی.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در در 1396/05/10, 18:45:57، مجید آرتا گفته است :

ببینید شما توی Async  بیا لیست فونتهارو توی DoInbackground بگیرید و به صورت یک List  اینهارو Return  کنید.

بعد توی متد OnPostExcute شما لیست رو بخون و اونجا ویوهات رو بساز.

ترد هم تفاوت چندانی نداره، شما لیست فونت رو میگیرید میدیدبه تابعی که Start  میشه، بعد لیست گرفته شده رو بخوایید توی ui  بزارید با با ترد و تابع RunOnGui  تابعی که مربوط به بایند کردن دیتا روی ui  هستش رو صدا میزنه که شما میایی توی این تابع ویو هاتو میسازی.

درسته فقط تو این حالت کار میکنه 

چندتا سوال برام پیش اومد  1_اینجا کار سنگین  اینشالایز کردن لیبل هست یا لیست کردن اسم فونتا ؟

2_قسمت OnPostExcute هم مثل DoInbackground توی ترد جدا انجام میشه یا توی ترد خود برنامه؟ من توی OnPostExcute که نوشته بودم موقع اجرا برنامه برا چندثانیه هنگ میکنه چون تعداد فونت ها زیاده حدود 150 تا

3_من اومدم از  AriaThread  استفاده کردم دقیقا متدهای ترد رو داره  همه چی خوب کار میکنه ولی وقتی از اون اکتیویتی بری اکتیویتی دیگه و برگردی اون موقع اون ویو هایی که ازاین طریق درست شده بودن حذف میشن چون گفتم فقط بار اول که اکتیویتی اجرا میشه از AriaThread استفاده کنه  ،چرا بعد از ایجاد شدن حذف میشه مگه موقتی ایجاد میشن؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام بستگی به برنامه داره !

 

حالا شما بیای پنل بزاری برنامت میاد کل کدارو تو مرحله اول میخونه و 5 ثانیه صبر میکنه ! اکتیویتی بزاری 1 ثانیه بابت باز شدن باید کاربر صبر کنه !

 

نوشتن کد خیلی مهمه ! تمیز باشه جوری که خودت حال کنی با نوشتنش

 

ترکیبی از هر دو باشه بهتره !

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام

ببینید استفاده از لایوت های زیاد توی یک اکتیویتی هم توصیه نمیشه و باعث سنگینی میشه؛ چون منابع گرافیکی زیادی میاد روی ترد سوار میشه و باعث سنگینی میشه.

شما بابد ببینید نیازتون در چه حدی هستش، می تونید از فرگمنت و ویو پیجر استفاده کنید.

بستگی به برنامه ای که میسازید داره، بر فرض مثال میشه یک کتاب ساده رو با دوتا اکتیویتی نوشت، هم میشه با بیشتر از دوتا.

اینجا هم مهارت کد نویسیتون مطرح میشه و هم نیازمندی شما.

پس استاندارد خاصی نداره که بهتون بگیم شما باید از 10 اکتیویتی بیشتر مصرف نکنید.

یکم که برنامه نویسی کنید و تجربه پیدا کنید تشخیص این مورد واستون راحت میشه.چرا بعضی موارد رو مثلا باید رعایت کنید، شما برای متغییر های ثابت خوبه که یک کلاس استاتیک یا همون Code Module  تعریف کنید.اگر دیتابیسی دارید بهتره که یک کلاس جداگونه بسازید که به صورت پویا و داینامیک بتونید از این کلاس توی کل پروژه استفاده کنید.

ماژول ها و کلاس هارو طوری بنویسید که قابلیت  دوباره استفاده شدن در پروژه های دیگه رو داشته باشه که باز بر میگرده به همون ماژولار نویسی  ( Reuse ) و موارد زیادی که کم کم تجربه می کنید.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در در 1396/05/08, 20:56:52، مجید آرتا گفته است :

سلام

ببینید استفاده از لایوت های زیاد توی یک اکتیویتی هم توصیه نمیشه و باعث سنگینی میشه؛ چون منابع گرافیکی زیادی میاد روی ترد سوار میشه و باعث سنگینی میشه.

شما بابد ببینید نیازتون در چه حدی هستش، می تونید از فرگمنت و ویو پیجر استفاده کنید.

بستگی به برنامه ای که میسازید داره، بر فرض مثال میشه یک کتاب ساده رو با دوتا اکتیویتی نوشت، هم میشه با بیشتر از دوتا.

اینجا هم مهارت کد نویسیتون مطرح میشه و هم نیازمندی شما.

پس استاندارد خاصی نداره که بهتون بگیم شما باید از 10 اکتیویتی بیشتر مصرف نکنید.

یکم که برنامه نویسی کنید و تجربه پیدا کنید تشخیص این مورد واستون راحت میشه.چرا بعضی موارد رو مثلا باید رعایت کنید، شما برای متغییر های ثابت خوبه که یک کلاس استاتیک یا همون Code Module  تعریف کنید.اگر دیتابیسی دارید بهتره که یک کلاس جداگونه بسازید که به صورت پویا و داینامیک بتونید از این کلاس توی کل پروژه استفاده کنید.

ماژول ها و کلاس هارو طوری بنویسید که قابلیت  دوباره استفاده شدن در پروژه های دیگه رو داشته باشه که باز بر میگرده به همون ماژولار نویسی  ( Reuse ) و موارد زیادی که کم کم تجربه می کنید.

سلام آقا مجید عزیز 

معادل فرگمنت و ویو پیجر در بیسیک چیه؟

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

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 8 ساعت قبل، بهزاد میرزائی گفته است :

سلام آقا مجید عزیز 

معادل فرگمنت و ویو پیجر در بیسیک چیه؟

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

سلام

ویوپیجر : AHViewPager

فرگمنت : کتابخونش رو اقای شاهدی قرار بوده بسازه، نمیدونم حالا ریلیز کردن یا نه.

واسه اون مورد عکسا هم، شما میتونید از Thread  یا AriaAsyncTask  استفاده کنید.

من یک سورسی رو نوشتم در مورد چیزی که خواستید که میاد با Thread  و AsyncTask  و ترد خود برنامه عکسارو لود میکنه.

شما به وسیله Thread  و AsyncTask  می تونید ui  برنامه رو نمایش بدید و واسه لود عکسا چون عکسا رزولیشن های مختلفی داره یکم لودش شاید یکی دو ثانیه طول بکشه که اینجا ما با یک پیغام مثلا در حال پردازشی چیزی کاربر رو منتظر میزاریم.

بهتره که پروژه رو خودتون ران کنید و ببینید عملکرد هر کدوم رو.

فقط برای تست توی رویداد Activity_Creat هر کدومو خواستید اجرا کنید از حالت کامنتی در بیارید و تست کنید.

Sub Activity_Create(FirstTime As Boolean)
	runner.Initialise("Runner")
	Async.Initialize("Async")
	Activity.LoadLayout("activity_main")
    LstImages  = File.ListFiles(File.DirAssets)
	Log("Started Loading Image's")
	Async.Run(Array(LstImages))
	'runner.Start(Me,"getBitmap",Array As Object(LstImages))
	'MainThread
	ProgressDialogShow("Wait For Showing. . .")
End Sub

اینجا »

Runner : اینجا Thread  ما هستش یعنی از نوع Thread  تعریف شده.

Async : اینم هم AriaAsyncTask  مون هستش.

MainThread :  این هم تابع معمولی هستش که به صورت ساده و هیچ کد اضافه ای میاد با حلقه عکسارو لود میکنه، همون چیزی که شما توی برنامتون استفاده کردید.

برای تست بازم میگم یکی یکی کامنت کنید و هر کدوم رو تست کنید.

نکته بعدی اینکه روی حالت Release  بزارید چون Thread  ها رو این حالت اجرا میشن و روی Debug  برنامه هیچ دیتایی رو به وسیله Thread تعریف شده نمایش نمیده.

نکته بعد هم بنده عکسایی که توی برنامه هستش رو پاک می کنم شما خودتون عکس به برنامه بدید و تست کنید، و سعی کنید عکسایی با حجم و رزولیشن بالا هم بدید تا از لحاظ Performance  هم برنامتون تستی بشه.

 

رمز فایل » answercenter.ir

LoadImagesWithThread.zip

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 7 ساعت قبل، مجید آرتا گفته است :

سلام

ویوپیجر : AHViewPager

فرگمنت : کتابخونش رو اقای شاهدی قرار بوده بسازه، نمیدونم حالا ریلیز کردن یا نه.

واسه اون مورد عکسا هم، شما میتونید از Thread  یا AriaAsyncTask  استفاده کنید.

 

LoadImagesWithThread.zip

سلام مجید جان 
ممکنه لطف کنی به پروژه بالا کتابخونه های 
    Private runner As Thread
    Private Async As AriaAsyncTask
رو هم اضافه کنی
خیلی ممنون 
 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در در 1396/05/09, 11:12:28، مجید آرتا گفته است :

 

Runner : اینجا Thread  ما هستش یعنی از نوع Thread  تعریف شده.

Async : اینم هم AriaAsyncTask  مون هستش.

MainThread :  این هم تابع معمولی هستش که به صورت ساده و هیچ کد اضافه ای میاد با حلقه عکسارو لود میکنه، همون چیزی که شما توی برنامتون استفاده کردید.

برای تست بازم میگم یکی یکی کامنت کنید و هر کدوم رو تست کنید.

نکته بعدی اینکه روی حالت Release  بزارید چون Thread  ها رو این حالت اجرا میشن و روی Debug  برنامه هیچ دیتایی رو به وسیله Thread تعریف شده نمایش نمیده.

نکته بعد هم بنده عکسایی که توی برنامه هستش رو پاک می کنم شما خودتون عکس به برنامه بدید و تست کنید، و سعی کنید عکسایی با حجم و رزولیشن بالا هم بدید تا از لحاظ Performance  هم برنامتون تستی بشه.

 

رمز فایل » answercenter.ir

LoadImagesWithThread.zip

خیلی ممنون بابت سورس 

پنجاه تا عکس توی Assets ریختم و با هر سه روش امتحان کردم هیچ تفاوتی توی زمان لود نشدن ایجاد نشد همشون به یه اندازه زمان میبره لود کردنشون، اما این وسط آریا سینک تسک ارور هایی هم توی لاگ داشت ولی کارشو انجام میداد فک کنم اگه تعداد لود عکسا بیشتر باشه همون Thread فقط عمل کنه،

برای تست پروژ ه ی خودم اومدم اصلا ساب لود عکس رو کلا برداشتم ولی بازم موقع اجرا چندین ٍثانیه سفید میاد بعد وارد برنامه میشه

توی  Activity_Create فقط یه لایوت لود کردمو با هف هشت تا دکمه دیگه همراه با تنظیمات اولیه شون که لازمه همون اول کار اعمال بشه ولی فک کنم چون زیاد شده اینجوراولش زمان میبره

موندم چیکار کنم

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 44 دقیقه قبل، بهزاد میرزائی گفته است :

خیلی ممنون بابت سورس 

پنجاه تا عکس توی Assets ریختم و با هر سه روش امتحان کردم هیچ تفاوتی توی زمان لود نشدن ایجاد نشد همشون به یه اندازه زمان میبره لود کردنشون، اما این وسط آریا سینک تسک ارور هایی هم توی لاگ داشت ولی کارشو انجام میداد فک کنم اگه تعداد لود عکسا بیشتر باشه همون Thread فقط عمل کنه،

برای تست پروژ ه ی خودم اومدم اصلا ساب لود عکس رو کلا برداشتم ولی بازم موقع اجرا چندین ٍثانیه سفید میاد بعد وارد برنامه میشه

توی  Activity_Create فقط یه لایوت لود کردمو با هف هشت تا دکمه دیگه همراه با تنظیمات اولیه شون که لازمه همون اول کار اعمال بشه ولی فک کنم چون زیاد شده اینجوراولش زمان میبره

موندم چیکار کنم

بنده زمانیکه به صورت معمولی تست میکردم ی چند ثانیه صفحه سیاه رو نمایش میدااد.اما با ترد و . . .  اکتیویتی سذیع میاد بالا و فقط یه زمان کوتاه واسه لود عکس ها زمان میبره که اونم بخاطر اینکه تصاویر دارای حجم و رزولیشن های مختلفی هستن، شما اصن بیا Thumbnail  این تصاویر رو درست کن و لود کن، ببینید خیلی سریع میاد بالا.

شما تصاویرتون هرچقد پیکسلش بالا باشه ضربدر 8 مقدار از رم فضا میگیره.و خب شاید روی بعضی گوشی ها با رم بالا و پردازنده چند هسته سریع بیاد بالا.

حالا باز من چک می کنم ببنیم راه های دیگه هم هستش که برنامه با سرعت هرچه بیشتر و پرفورمنس خوب بیاد بالا.

 

در ۱ ساعت قبل، arastooms گفته است :

سلام مجید جان 
ممکنه لطف کنی به پروژه بالا کتابخونه های 
    Private runner As Thread
    Private Async As AriaAsyncTask
رو هم اضافه کنی
خیلی ممنون 
 

بفرما ارسطو جان »

Libs.rar

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

مهمان
این موضوع برای عدم ارسال قفل گردیده است.
  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...