![]() |
Beim Beenden der App erscheint: Project1 Angehalten
Hallo
Habe meine erste Android App geschrieben. Eigentlich funktioniert auch alles tiptop. Aber wenn ich die App beende (Also mit dem "Zurück Pfeil") kommt immer die Meldung: "Project1 angehalten". Weiss jemand was ich machen muss, damit diese Meldung beim beenden der App nicht erscheint? |
AW: Beim Beenden der App erscheint: Project1 Angehalten
Hallo,
die Frage wird dir so keiner beantworten können. Da hilft nur :glaskugel: Passiert das in Delphi auch und wo landet dann der Debugger? Steht evtl.etwas in dem Close-Event was dann knallt? Werden alle Objekte/ Listen usw. richtig frei gegeben? Verwendest du eine Datenbank? Du siehst, ohne genauere Infos kann man eine solch pauschale Frage nicht beantworten. |
AW: Beim Beenden der App erscheint: Project1 Angehalten
Hallo Juergen
Danke für die Antwort. Also im onClose habe ich nichts drinn. Im Delphi Android Emualtor funktioniert meine App leider nicht. Daher starte ich sie immer direkt auf meinem Handy (Galaxy S3). Da es eine recht simple App ist, hier mein Code:
Delphi-Quellcode:
unit TabbedTemplate;
interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.TabControl, FMX.StdCtrls, FMX.Gestures, FMX.Edit, IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdSSL, IdSSLOpenSSL, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase, IdFTP, FMX.Layouts, FMX.ListBox, FMX.Memo, FMX.Objects; type TTabbedForm = class(TForm) HeaderToolBar: TToolBar; ToolBarLabel: TLabel; TabControl1: TTabControl; TabItem1: TTabItem; TabItem2: TTabItem; GestureManager1: TGestureManager; Edit1: TEdit; Label1: TLabel; Label2: TLabel; Edit2: TEdit; CheckBox2: TCheckBox; Edit3: TEdit; Label3: TLabel; CheckBox3: TCheckBox; CheckBox4: TCheckBox; CheckBox1: TCheckBox; SpeedButton2: TSpeedButton; ListBox1: TListBox; IdFTP1: TIdFTP; IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL; ProgressBar1: TProgressBar; SpeedButton1: TSpeedButton; Memo1: TMemo; Timer1: TTimer; Image1: TImage; procedure FormCreate(Sender: TObject); procedure FormGesture(Sender: TObject; const EventInfo: TGestureEventInfo; var Handled: Boolean); procedure SpeedButton2Click(Sender: TObject); procedure CheckBox3Change(Sender: TObject); procedure CheckBox4Change(Sender: TObject); procedure SpeedButton1Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { Private declarations } public { Public declarations } end; var TabbedForm: TTabbedForm; implementation {$R *.fmx} procedure TTabbedForm.CheckBox3Change(Sender: TObject); begin if checkbox3.IsChecked=true then checkbox4.IsChecked:=false; end; procedure TTabbedForm.CheckBox4Change(Sender: TObject); begin if checkbox4.IsChecked=true then checkbox3.IsChecked:=false; end; procedure TTabbedForm.FormCreate(Sender: TObject); begin { This defines the default active tab at runtime } TabControl1.ActiveTab := TabItem1; end; procedure TTabbedForm.FormGesture(Sender: TObject; const EventInfo: TGestureEventInfo; var Handled: Boolean); begin {$IFDEF ANDROID} case EventInfo.GestureID of sgiLeft: begin if TabControl1.ActiveTab <> TabControl1.Tabs[TabControl1.TabCount-1] then TabControl1.ActiveTab := TabControl1.Tabs[TabControl1.TabIndex+1]; Handled := True; end; sgiRight: begin if TabControl1.ActiveTab <> TabControl1.Tabs[0] then TabControl1.ActiveTab := TabControl1.Tabs[TabControl1.TabIndex-1]; Handled := True; end; end; {$ENDIF} end; procedure ListFileDir(Path: string; FileList: TStrings); var SR: TSearchRec; begin if FindFirst(Path + '*.*', faAnyFile, SR) = 0 then begin repeat if (SR.Attr <> faDirectory) then begin FileList.Add(SR.Name); end; until FindNext(SR) <> 0; FindClose(SR); end; end; procedure TTabbedForm.SpeedButton1Click(Sender: TObject); begin memo1.Lines.Clear; memo1.Lines.Add(edit1.Text); memo1.Lines.Add(edit2.Text); if checkbox2.IsChecked=true then memo1.Lines.Add('SSLon') else memo1.Lines.Add('SSLoff'); memo1.Lines.Add(edit3.Text); if checkbox3.IsChecked=true then memo1.Lines.Add('copy') else memo1.Lines.Add('move'); if checkbox1.IsChecked=true then memo1.Lines.Add('erstellen') else memo1.Lines.Add('direct'); memo1.Lines.SaveToFile(getHomePath + '/options.gee'); end; procedure TTabbedForm.SpeedButton2Click(Sender: TObject); var i: integer; begin ListFileDir('/sdcard/DCIM/camera/', ListBox1.Items); progressbar1.Max:=listbox1.Items.Count; idftp1.Host:=edit1.Text; idftp1.Port:=strtoint(edit2.Text); if checkbox2.IsChecked=true then begin idftp1.UseTLS:=utUseExplicitTLS; idftp1.IOHandler:= IdSSLIOHandlerSocketOpenSSL1; end else begin idftp1.UseTLS:=utNoTLSSupport; idftp1.iohandler:= nil; end; idftp1.Connect; idftp1.ChangeDir(edit3.Text); if checkbox1.IsChecked=true then begin idftp1.MakeDir(datetostr(now)); idftp1.ChangeDir(datetostr(now)); end; application.ProcessMessages; for I := 0 to listbox1.Items.count-1 do begin idftp1.Put('/sdcard/DCIM/camera/'+listbox1.Items[i], listbox1.Items[i]); progressbar1.Value:=i; application.ProcessMessages; end; if checkbox4.IsChecked=true then begin for I := 0 to listbox1.Items.Count-1 do begin deletefile('/sdcard/DCIM/camera/'+listbox1.Items[i]); end; end; end; procedure TTabbedForm.Timer1Timer(Sender: TObject); begin timer1.Enabled:=false; if fileexists(getHomePath + '/options.gee' ) then begin memo1.Lines.LoadFromFile(getHomePath + '/options.gee'); edit1.Text:=memo1.Lines[0]; edit2.Text:=memo1.Lines[1]; if memo1.Lines[2]='SSLon' then checkbox2.IsChecked:=true; edit3.Text:=memo1.Lines[3]; if memo1.Lines[4]='copy' then checkbox3.ischecked:=true else checkbox4.IsChecked:=true; if memo1.Lines[5]='erstellen' then checkbox1.IsChecked:=true; end else begin showmessage('Bitte alle Einstellungen setzen und speichern.'); end; end; end. |
AW: Beim Beenden der App erscheint: Project1 Angehalten
FYI: Zum Auflisten der Dateien gibt es eine Delphi Funktion:
var files: TStringDynArray; files := TDirectory.GetFiles(Folder); Kannst die Funktion also ändern: procedure ListFileDir(Path: string; FileList: TStrings); var Count: Integer; files: TStringDynArray; begin FileList := TStringlist.Create; files := TDirectory.GetFiles(Path); For Count := 0 to Length(Files)-1 do FileList.Add(Files[Count]); end; |
AW: Beim Beenden der App erscheint: Project1 Angehalten
Zitat:
Oder du mußt den Parameder in einen VAR OUT-Parameter ändern. |
AW: Beim Beenden der App erscheint: Project1 Angehalten
Stimmt :) Aber eigentlich kann er sich auch die gesamte Funktion sparen und .GetFiles direkt implementieren.
|
AW: Beim Beenden der App erscheint: Project1 Angehalten
Am Schönsten als Class Helper das originale GetFiles überladen.
|
AW: Beim Beenden der App erscheint: Project1 Angehalten
Also ich habe heute endlich herausgefunden was das App beim beenden "Abstürtzen" lässt (Project1 wurde angehalten)
Es ist die IdFTP Komponente!! Habe ein leeres Formular genommen. = Kein Absturz Sobal ich die IdFTP drauf setze, stürtzt das App beim beenden ab. Obwohl ich die Komponente nicht einmal benutze... (Kein Connect etc...) Was kann man da machen? :-) |
AW: Beim Beenden der App erscheint: Project1 Angehalten
Mmmh... Leere Anwendung mit TidFTP1 Komponente macht hier keine Probleme (Simulator, iPod Touch getestet)
Beispielprojekt? FormCreate? |
AW: Beim Beenden der App erscheint: Project1 Angehalten
Liste der Anhänge anzeigen (Anzahl: 3)
Hat jemand von euch zufälligerweise ein Samsung Handy? Wo er das mal testen könnte? Diese APK ist ein leeres Formular mit einer "leeren" idFTP Komponente drauf. Jedes mal wenn ich die Anwendung mit dem Back Pfeil "schliesse" kommt der Absturtz...
Liegts evt an meinem Handy? Muss den Fehler unbedingt finden :? |
AW: Beim Beenden der App erscheint: Project1 Angehalten
Und das Verhalten bei anderen Android-Smartphones interessiert Dich nicht?
|
AW: Beim Beenden der App erscheint: Project1 Angehalten
natürlich schon. aber ich hab nur ein Handy und kriege den Emulator nicht zum laufen. Jedes mal wenn ich das App im Emulator starte bleibt einfach der schwarze App Ladebildschirm während des laden der App stehen.
|
AW: Beim Beenden der App erscheint: Project1 Angehalten
Achso, du meinst weil ich geschrieben habe: Ob jemand ein Samsung Handy hat. Wäre natürlich auch schon toll wen man weiss das es bei anderen Smartphones nicht oder eben auch auftritt. Sorry
|
AW: Beim Beenden der App erscheint: Project1 Angehalten
Moin moin,
dieses Problem kann ich bestätigen. Ich habe eine Test-App mit XE5 erstellt und nutze eine TIdHttp Komponente um per Get Daten abzurufen. Platziert man die Komponente direkt aus dem Designer heraus auf dem Formular, erscheint bei Drücken des Backbuttons die Meldung "AnwendungXYZ angehalten". Dasselbe Verhalten tritt auf wenn die Komponente einmalig im Code erzeugt wird und man als Owner das Formular übergibt. Erstelle ich hingegen die Komponente temporär pro Request und gebe sie danach direkt wieder frei gibt es keine Probleme. |
AW: Beim Beenden der App erscheint: Project1 Angehalten
Owner=Form -> kommt beim Beenden auf's Selbe raus, als wenn das Ding automatisch erzeugt wurde.
Also liegt das Problem darin, daß beim Beenden (Freigeben der Form) die daran hängende Indy-Komponente irgendwas macht, während ihrer Freigabe. Bleibt die Anwendung auch hängen, wenn ihr zur Laufzeit diese Komponente freigebt (Free) ? Was passiert, wenn die Komponente auf einer Sub-Form liegt, welche zur Laufzeit freigegeben wird? Wenn man beim Schließen (vielleicht OnDestroy, OnClose oder OnCloseQuery) den Owner abhängt (
Delphi-Quellcode:
) und die Komponente manuell freigibt, oder (notfalls) als "Speicherleck" rumliegen lässt ... geht es dann?
Self.RemoveComponent(IdFTP1);
|
AW: Beim Beenden der App erscheint: Project1 Angehalten
Zitat:
|
AW: Beim Beenden der App erscheint: Project1 Angehalten
Also ich weiss jetzt nicht genau ob es Zufall ist oder evt einen Zusammenhang hat.
Ich habe ein neues Projekt in der form2 das Start/Haupt Formular ist. Auf dieser Form liegt auch die idftp Komponente. Und siehe da: jetzt stürzt es nicht mehr ab. Bei meiner ersten Anwendung war Form1 die "Haupt"Form |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz