frame問題(create / free )... |
答題得分者是:pcplayer99
|
firesu
中階會員 發表:26 回覆:28 積分:55 註冊:2004-12-27 發送簡訊給我 |
開發版本:XE7+ android SDK 22.3
在form 的輸入框隨便輸入,然後按 [frame1] 在frame上的輸入框隨便輸入,然後按 [button1] 重覆上面步驟幾次後,就會有記憶體 av xxxxxx的錯誤訊息... 是否是frame的create / 釋放 寫法有問題? form程式碼 [code delphi] unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls, FMX.Controls.Presentation, FMX.Edit, FMX.Ani, Unit3; type TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; procedure Button1Click(Sender: TObject); private f2: TFrame3; { Private declarations } procedure Finish1(Sender: TObject); public { Public declarations } end; var Form1: TForm1; implementation {$R *.fmx} {$R *.LgXhdpiPh.fmx ANDROID} procedure TForm1.Button1Click(Sender: TObject); begin try f2 := TFrame3.Create(nil); f2.Parent := Self; f2.Button1.OnClick := Finish1; //f2.CancelButton.OnClick := CancelClick; //f2.CancelButton.Visible := False; f2.PosXAni.PropertyName := 'Position.Y'; f2.PosXAni.StartValue := Self.ClientHeight; f2.PosXAni.StopValue := 0;//(Self.ClientHeight - f2.MainLayout.Height) / 2; f2.PosXAni.Duration := 0.2; f2.PosXAni.Inverse := False; f2.PosXAni.Interpolation := TInterpolationType.Linear; //f2.OkButton.Align := TAlignLayout.Center; //form1.OnKeyUp := f2KeyUp; f2.PosXAni.Enabled := True; except // end; end; procedure TForm1.Finish1(Sender: TObject); begin f2.Parent := nil; FreeAndNil(f2); end; [/code] 測試程式在會員求助程式上傳區 編輯記錄
firesu 重新編輯於 2018-05-21 16:44:10, 註解 無‧
|
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
|
firesu
中階會員 發表:26 回覆:28 積分:55 註冊:2004-12-27 發送簡訊給我 |
釋放改用這段測試
f2.Parent := nil; f2.DisposeOf; f2 := nil; android 4.4 (三星 Galaxy Tba4)上, 沒有記憶體的問題了 android7 (Mi 5s Plus)上, 有對frame裡的edit做一些輸入動作, 就很容易有記憶體的錯誤 不對frame裡的edit做輸入, 就不會有問題... ===================引 用 GrandRURU 文 章=================== 釋放應使用 DisposeOf,在 Android 的世界釋放只是標記回收記憶體,非真實釋放,短時間大量 Create 和 DisposeOf 會造成記憶體快速膨脹導致閃退,為了環保,請重複使用塑膠袋 (x)物件(o) |
pcplayer99
尊榮會員 發表:146 回覆:790 積分:632 註冊:2003-01-21 發送簡訊給我 |
|
firesu
中階會員 發表:26 回覆:28 積分:55 註冊:2004-12-27 發送簡訊給我 |
搞不懂..
abdroid 7 如果有對frame的edit做打字行為, 釋放frame時, 超容易有記憶體錯誤的訊息.. 先暫時用隱藏. ===================引 用 pcplayer99 文 章=================== 我没仔细看你的代码,我理解你的代码是: 1. 在 Frame 上面有一个 Button; 2. 点这个 Button 释放这个 Frame; 如果是这样的话,可能会出错。不如改为隐藏这个 Frame。 |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
我提供自身的經驗
在 xe 設計使用 Frame 的時候, 不管是不是用預載或動態加入的方式, 一旦建立Frame, 就無法釋放, 我也曾有這種想法, 不論是用Free, Deposof, Destroy... 都會引發 Android 的錯誤(在 Android 5.0上), 原因呢我不知道, 只知道這樣做會錯, 所以只能隱藏, 要不然就是不要使用 Frame ===================引 用 firesu 文 章=================== 搞不懂.. abdroid 7 如果有對frame的edit做打字行為, 釋放frame時, 超容易有記憶體錯誤的訊息.. |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |