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

چجوری رم رو حالی کنم؟


shakala

سوال

سلام

دوستان من با یه کدی. عکس رو از دیتابیس میگیرم و در bitmap1 ذخیره میکنم و اون رو میدم به imagview1


If cur.GetString("aks"&i) <> Null Then

bitmap1(i) = LoadBitmap(File.DirAssets,cur.GetString("aks"&i)&".jpg")

ImageView1.Bitmap = bitmap1(i)

next

در کد بالا bitam1 یک ارایه هسته و هر دفعه اسم عکس رو از دیتابیس میگیره

اما اگه چند بار بری بیرون و برگردی به اکتیوتی . ( 5 بار ) عکس ها رو کوچیک و چند بار دیگه بری دیگه اصلا بالا نمیاد برنامه

برای پاک کردن این عکس ها از کتابخانه relfection استفاده کردم و این کد رو نوشتم

Sub Activity_Pause (UserClosed As Boolean)
For i = 0 To 14

If cur.GetString("aks"&i) <> Null Then
obj1.Target=bitmap1(i)
obj1.RunMethod("recycle")
End If
Next
End Sub

اما کار نمیکنه و باز هم بعد چند بار هنگ میکنه . من چکار کنم؟

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

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

دوستان این روش خیلی سخت بود. من باید کل کد ها رو تغییر بدم. یعنی همه ی کسایی که کتاب عکس دار میسازند این کار رو میکنند؟

وقتی activity بسته میشه. باید رم خالی بشه. به نظر شما این باگ بیسیک نیست؟

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

sepidpor

شرمنده پست شما رو ندیدم.

من قبلا از همین کد شما استفاده میکردم. اما امدم از کتابخانه refelction استفاده کنم. گفتم بزار ارایه کنم شاید درستوز recycle اینجوری کار نکنه

حالا دوباره امتحان میکنم.

jeqele

این حرفت آتش زد به جانم دلیل فعالیتتو میگم

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

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

سورس نمیتونم بزارم. *عطسه*

تو سایتش نموشته به حجم عکس کاری نداره. به طول و عرض بستگی داره. اگه کمتر کنی طول و عرض رو رم کمتری مصرف میشه. اما هر کاری کنی. باز هم اگه چند بار لود کنی. باز اینجوری میشه.

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

البته تو پیسی اینجوری نمیشه چون رم کامپیوتر زیاده و تو گوشی هایی که رم زیادی دارن هم نمیشه باید رم گوشی کم باشه . البته گوشی های رم بالا هم میشه. اما بیشتر طول میکشه

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

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

بازار گیر نمیده به این؟

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

از LoadBitmapSample استفاده کن ببین چه جور می شه

اگر درست نشد

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

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

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

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

سورس رو که اجرا کردید چند بار گوشی رو بچرخونید تا اکتیویتی ریست بشه. بعد چند بار میبینید عکس کوچیکتر میشه و بعد چندین بار دیگه میبینید کلا بسته میشه

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

لینک دانلود

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

پروژتو رو گوشی خودم تست کردم، بیش از 150 بار اکتیویتی رفرش شد اما یک ارور هم نداد و عکس هم کوچک نشد

شاید گوشی من خیلی رمش زیاده...

به هر حال فکر نمی کنم روی اکثر گوشیا مشکل پیدا کنی

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

این کدهارو جای کدهایی که نوشتی بنویس، فقط جاشونو عوض کردم و قرار نیست اینجوری بنویسی فقط می خوام ببینم با حذف کردن ویو رمت خالی می شه یا نه

Sub Activity_Create(FirstTime As Boolean)
   'Do not forget to load the layout file created with the visual designer. For example:
   Activity.LoadLayout("m")

End Sub

Sub Activity_Resume
   Dim bitmap1 As Bitmap
   bitmap1.Initialize(File.DirAssets,"counter-strike-HD-Wallpapers.jpg")
   Dim ImageView1 As ImageView
   ImageView1.Initialize("test")
   ImageView1.Bitmap = bitmap1
   ScrollView1.Panel.AddView(ImageView1,0,0,ScrollView1.Width,ScrollView1.Height)
End Sub

Sub Activity_Pause (UserClosed As Boolean)
ScrollView1.Panel.RemoveAllViews 
End Sub

اینم تست کن

Sub Globals
   'These global variables will be redeclared each time the activity is created.
   'These variables can only be accessed from this module.
   Private ScrollView1 As ScrollView
   Dim bitmap1 As Bitmap
End Sub

Sub Activity_Create(FirstTime As Boolean)
   'Do not forget to load the layout file created with the visual designer. For example:
   Activity.LoadLayout("m")

End Sub

Sub Activity_Resume

   bitmap1=LoadBitmap(File.DirAssets,"counter-strike-HD-Wallpapers.jpg")
   Dim ImageView1 As ImageView
   ImageView1.Initialize("test")
   ImageView1.Bitmap = bitmap1
   ScrollView1.Panel.AddView(ImageView1,0,0,ScrollView1.Width,ScrollView1.Height)
End Sub

Sub Activity_Pause (UserClosed As Boolean)
ScrollView1.Panel.RemoveAllViews 
End Sub

برنامه ات برای گوشی من اصلا مشکلی ایجاد نکرد برای همین نمی تونم ببینم این کدا تأثیری داره یا نه

یه راه حل هم که قبلا گفته ام اینجا Erel خودش کامل توضیح داده به یکی که مشکل تورو داشته

http://www.b4x.com/android/forum/threads/bitmaps-and-out-of-memory-error.26891/

مشکلت اگه حل شد بگو بقیه هم استفاده کنن

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

جدید همه گوشیشون از خانواده z شده

یه کاری کردم خیلی کمک میکنه به درست شدن این مشکلم.( خیلی)

میخوام تو تنظیمات هم یه گزینه بزارم. اگه کاریبر خواست. عکس ها در گالری گوشی باز بشه.

ممنون

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

اگر به جوابی رسیدین ممنون میشم به ماهم یاد بدین

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

سلام. مرسی یادم انداختید

تو manifiest اینو وارد کردم تا رم بیشتری از دستگاه رو استفاده کنه

SetApplicationAttribute(android:largeHeap,"true")

عکس ها رو با این کد لود کردم

bitmap1.InitializeSample(File.DirAssets,"esme kas",Activity.Height,Activity.Width)

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

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

یعنی مثلا کاربر تو اکتویتی "لیست موضوع ها" میاد رو دکمه " مطلب اول " کلیک میکنه . من اول عکس ها رو لود میکنم. و بعد مینویسم که بره به اکتیویتی " نمایش مطلب ". و عکس های مطلب رو از اکتیویتی قبلی یعنی "لیست موضوع ها" بگیره

خوب توضیح دادم ؟ *لال* اگه این کارو کنی و کاربر گوشی رو بچرخونه دوباره عکس رو لود نمیکنه که رم مصرف بشه چون داره عکس ها رو از یه اکتیویتی دیگه میگیره

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

عکس ها ذخیره میشند؟ مگه با یک اسم نیست؟ چطور 2 , 3 بار ذخیره میشه؟؟

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

سلام

عکس ها ذخیره میشند؟ مگه با یک اسم نیست؟ چطور 2 , 3 بار ذخیره میشه؟؟

ببنیید. تو کد بالا اول میاد . اسم عکس اول رو ( aks0) رو از دیتابس میگیره. و داخل

bitmap(0)

ذخیره میکنه. بیت مپ ارایه هسته .

بعد بار دوباره aks1 رو میگیره و همین کارو تکرار میکنه. ببنید چون از دستور for استفاده کردم. i یک بار صفره بعد 1 میشه بعد 2 میشه دیگه؟ منم نوشتم aks&i یعنی عکس + i اگه i مساوی با 0 باشه aks0 رو میگیره و اگه 2 باشه عکس aks2 رو میگیره

دوست عزیز سوالتون رو واضح مطرح کنید!!

الان قصد دارید عکس های دیتابیس رو پاک کنید ؟ یا میخواهید عکسی که لود شده رو پاک کنید ؟

موضوع سوالتون با مشکلتون همخوانی نداره!!!!

توضیحات بیشتری ارائه بدید ممنون.

ببینید من با هر کدی. هالا کدش مهم نیست عکس ها رو میگیرم و اونو میدم به imageview که داخل کتابم نمایش داده بشه. *خنده*

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

مینویسه رم پر شده و برنامه بسته میشه

یعنی هر دفعه که ما یه عکس و لود میکنیم. بعد که اکتیویتی بسته میشه. اون عکس پاک نمیشه از تو رم. یعنی اطلاعاتش باقی میمونه و رم رو پر میکنه

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

دوست عزیز سوالتون رو واضح مطرح کنید!!

الان قصد دارید عکس های دیتابیس رو پاک کنید ؟ یا میخواهید عکسی که لود شده رو پاک کنید ؟

موضوع سوالتون با مشکلتون همخوانی نداره!!!!

توضیحات بیشتری ارائه بدید ممنون.

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

بایگانی شده

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

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

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