私は、ボタンクリックで現在起動している非同期タスク(P、Q、R)を使用してデータをWebサービスにアップロードするAndroidアプリケーションを用意しています。私は3つのテーブル(A、B、C)のデータを持っています。現在、最初の非同期タスク(P)のdoInBackgroundにテーブルAデータをアップロードし、最初の非同期タスク(P)のonPostExecuteで2番目の非同期タスク(Q)を呼び出します。onPostExecuteでは、返されたデータでローカルテーブルを更新し、同じように。その機能はすでに存在していますが、アプリケーションが終了しても一定の時間間隔(30分ごと)でデータをアップロードしたいと考えています。デバイスが起動している/アプリケーションの更新/アプリケーションをインストールするとき、このプロセスを開始する必要があります。データをアップロードしている間、ユーザーがアプリケーションを開くと、アップロードボタンは無効にする必要があります。 1.非同期タスクではなくサービスを使用する必要がありますか? と私にこれに関するアドバイスをください。アップロードデータに一定時間間隔でAndroidデータをアップロード
答えて
私はあなたがむしろ私はあなたが非常に簡単かつ非常にあるボレーや改造へ移行すべきだと思うAsynctasksよりも、アンドロイドにかなり新しいものだと思う従っ
のようにしてください。 Asynctask
と比較して高速な私の代わりに、非同期タスク
サービスを使用する必要がありますか
30分ごとにデータをアップロードする必要があるので、データをアップロードするサービスにコードを移動することをおすすめします。サービスはを使用しているので、また、それがバックグラウンド
デバイスの起動時にサービスを開始する必要があります。app.Iを更新してUIを更新します(アップロード中にアップロードボタンを無効にしますいくつかのトーストメッセージ)、私はonPostExecuteで2番目の非同期タスクを呼び出します。それを達成する方法?私はAlarmManagerを使用する必要がありますか? – user2708104
ブート時にサービスを開始するオプションがありますが、タイマーもありません。両方とも同じ目的を果たします。 –
あなたのレシーバークラス
import java.util.Timer;
import java.util.TimerTask;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class yourReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, Intent intent) {
int delay = 5000; // delay for 5 sec.5000
int period = 60000; // repeat every 1min.60000
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
Intent serviceIntent = new Intent(context,UploadService.class);
context.startService(serviceIntent);
}
}, delay, period);
}
}
あなたのサービスクラス
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;
import android.widget.Toast;
public class UploadService extends Service {
MediaPlayer myPlayer;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
Toast.makeText(this, "Service Created", Toast.LENGTH_LONG).show();
myPlayer = MediaPlayer.create(this, R.raw.sun);
myPlayer.setLooping(false); // Set looping
}
@Override
public void onStart(Intent intent, int startid) {
Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();
serviceThread = new ServiceThread();
serviceThread.start();
}
@Override
public void onDestroy() {
Toast.makeText(this, "Service Stopped", Toast.LENGTH_LONG).show();
myPlayer.stop();
}
private class ServiceThread extends Thread {
@Override
public void run() {
synchronized(UploadService.class){
if(uploadStatus) {
uploadStatus = false;
uploadData();
uploadStatus =true;
}
}
}
}
}
ありがとうございます。サービスを使用して非同期タスクのonPostExecuteを達成する方法私は3つの非同期タスクを持っています。 2番目のタスクは1番目のタスクonPostExecuteから呼び出しています。 – user2708104
- 1. 一定の時間間隔でデータを取得する
- 2. ハイチャートとほぼほぼ一定の時間間隔のデータ
- 3. Android Scrollview:「一定間隔でスクロールジャンプする」
- 4. Javaで一定の時間間隔で多くのデータを追加します。
- 5. 一定の時間間隔でグラフ/プロットを更新する
- 6. 一定の間隔
- 7. 特定の時間間隔のデータをPythonで取得する
- 8. 時間間隔
- 9. データは特定の時間間隔で渡されます
- 10. Androidの時間間隔の割合
- 11. 一定の時間間隔の後、一定の時間間隔の間に実行するスケジューラタスクを設定する方法
- 12. Androidシステムのスリープ時間間隔を定義する
- 13. 固定間隔の後、一定の時間間隔でのみラクマータイマーを実行するには
- 14. vbscriptでの時間間隔の時間
- 15. 時間間隔タスクサービス
- 16. 間違った出力一定間隔
- 17. C++で一定の時間間隔でメソッドを実行するWindowsサービス
- 18. Javaプログラムで一定の時間間隔で何かを起こすには?
- 19. 時間系列データを1つの行(PythonicWay)で時間間隔に分割 -
- 20. Jmeter-Thread-一定の時間間隔でユーザーのセットを実行する方法
- 21. JavaScriptで一定の時間が経過してから間隔を空ける
- 22. Laravelは一定の時間間隔でデータベースにエントリを取得します
- 23. 一定時間間隔で休憩サービスを呼び出して停止する
- 24. Androidで所定の時間間隔の後にカメラを閉じるには?
- 25. 時間間隔のJavaScriptビジュアルタイムライングラフ
- 26. 整数時間間隔
- 27. セロリ間隔スケジュール時間
- 28. JPQLの時間間隔
- 29. ビデオの時間間隔
- 30. SQL Serverの時間間隔
Webサービスをラップで走るようアプリは、また閉じているときに動作しますあなたの 'Service'クラスで30分遅れてタイマータスクを実行してください... – Mohit