会社の一部のAsus Android 7タブレットで動作するアンドロイドアプリを開発しましたが、私は非常に奇妙な動作を見つけました。このアプリケーションは非常に小さく簡単です。デルファイアンドロイドアプリケーションが数分後にクラッシュする
- ボタンが3ページで
- A TTabControl 2つの編集 から取られた2つの文字列値を格納するために、それらのそれぞれは、内部TWebBrowserを持っている:それはあります。
- トップにあるJavaScriptコードを実行するボタン。
はwin32から取得した画像が表示されます。下にはエラーなしで簡単に(そしておそらく)コードがあります。私はもちろんfiremonkeyの下にいます。
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は、Delphi TTimer
のようなものです。 1000msの周期で、第1引数に関数を実行します。これはFirefoxとWin32アプリとして完璧に動作します。
これは、人がダウンロードして使用するものであれば、これを永続的な「解決策」とは考えません。これは一時的な回避策です。 –