我开发了一个Android应用程序,可以在一家公司的一些华硕Android 7平板电脑上运行,但我发现一个非常奇怪的行为。这个应用程序非常小,容易;它具有:Delphi之后几个Android应用程序崩溃
- A按钮,以存储从2名编辑 采取
- 甲TTabControl用3页2个字符串值和他们每个人都有内部的TWebBrowser。
- 顶部的按钮执行一些JavaScript代码。
你可以看到图片here取自win32。下面是代码,这是很容易,(我猜)没有错误。当然,我受到了火种的熏陶。
type
TForm1 = class(TForm)
// ... declarations ...
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
FLinea: string;
list: TStringList;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
//I take the text from the 3 edits you can see above (picture) and I save a txt file
procedure TForm1.Button1Click(Sender: TObject);
var salva: TStringList;
begin
/*just for debug purpose...*/
if ((Length(EditLinea.Text) > 0) and (Length(EditOperatore.Text) > 0) and (Password.Text = 'abc123')) then
begin
FLinea := TPath.Combine(TPath.GetHomePath, 'operatore.txt');
salva := TStringList.Create;
salva.Add(EditLinea.Text);
salva.Add(EditOperatore.Text);
salva.SaveToFile(FLinea);
ShowMessage('Saved! Restart the app.');
end
else
begin
ShowMessage('Wrong password!');
end;
end;
//when I press the STOP button above I execute a javascript function that is defined in the page loaded in the browser
procedure TForm1.Button2Click(Sender: TObject);
begin
WebBrowser.EvaluateJavaScript('stopExec();');
end;
//Here I just check if a txt file exists and I load it
procedure TForm1.FormCreate(Sender: TObject);
begin
//HERE I CHECK IF THERE IS A TXT FILE THAT I NEED TO LOAD
FLinea := TPath.Combine(TPath.GetHomePath, 'operatore.txt');
if (FileExists(FLinea)) then
begin
list := TStringList.Create;
list.LoadFromFile(FLinea);
LabelImpiegato.Text := 'OPERATORE '+list.Strings[1];
WebBrowser.URL := 'www.aaa.com/loader.php?linea='+list.Strings[0]+'&operat='+list.Strings[1];
WebBrowser.EnableCaching := false;
WebBrowser.Navigate;
end
else
begin
//error
TabControl.Visible := false;
Error.Visible := true;
end;
end;
问题:的应用程序工作正常,但过一段时间后(一般为10/15分钟)崩溃。错误消息是“应用程序突然停止”。它可能是我的代码错了吗?
我真的怀疑它可能是平板电脑上的省电配置。我真的不知道该怎么做,因为我正在寻找类似OnException
的财产,但没有运气。
难道是与TWebBrowser冲突的JavaScript代码?看:
function start() {
myVar = setInterval(myTimer, 1000);
myVar2 = setInterval(orologio, 1000);
}
基本上这是一个当页面打开(身体的onload)和setInterval的是像德尔福TTimer
调用的函数。以1000ms的周期执行第一个参数的功能。它适用于Firefox和Win32应用程序。
我不认为这是一种永久的“解决方案”,特别是如果这是人们下载和使用的东西。这只是一个临时解决方法。 –