基本的に、実行したいコードをdoInBackground内の別のスレッドに配置する必要がありますか、それともdoInBackground内の別の関数/クラス/whatever-it-is-functions-are-called-in-JAVAを呼び出して非同期で実行できますか?IE :(オンラインで見つけたサンプルコード)
protected String doInBackground(String... params) {
for(int i=0;i<5;i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
TextView txt = (TextView) findViewById(R.id.output);
txt.setText("Executed");
return null;
}
これは私がそれが行われたのを見た方法ですが、代わりに私は行うことができます:
protected String doInBackground(String... params) {
postToServer(x,y,z,h);
}
すでに作成した関数を呼び出して、その関数を別のスレッドで実行しますか?HTTPサーバーの応答が少し遅い場合があり(現時点ではテストが不十分なサーバーです)、postToServer()の呼び出しに5秒以上かかると、Androidは自動的にkillプロセスボックスをポップアップし、UIが無効になるまでpostToServer()呼び出しが終了します。これは、GPS追跡アプリ(私が働いている会社の内部)を開発していて、追跡をオフにするUIオプションが、postToServer()が終了するまでフリーズするため、問題になります。これが回答された場合はお詫び申し上げます。検索してみましたが、この機能を実現するために期待している方法で機能する例は見つかりませんでした。