我正在開發一個應用程序,其中的情景是這樣的,當用戶將應用程序保存在他們的設備中時,然後在7天后,我必須發送服務器請求來通知服務器這個問題。我該怎麼做。如何在7天后只發送一次服務器請求?
注意: - 我只需要在7天后發送服務器請求,一次不會在7天后再次發送。
我正在開發一個應用程序,其中的情景是這樣的,當用戶將應用程序保存在他們的設備中時,然後在7天后,我必須發送服務器請求來通知服務器這個問題。我該怎麼做。如何在7天后只發送一次服務器請求?
注意: - 我只需要在7天后發送服務器請求,一次不會在7天后再次發送。
嘗試使用Timer來安排「向服務器任務發送請求」,類似這樣的事情,請更改爲相關參數。
TimerTask tasknew = new TimerSchedulePeriod();
Timer timer = new Timer();
// scheduling the task at interval
timer.schedule(tasknew,100, 100);
這可能對你有幫助。
您可以獲取應用程序從
PackageManager pm = context.getPackageManager(); ApplicationInfo appInfo = pm.getApplicationInfo("app.package.name", 0); String appFile = appInfo.sourceDir; long installed = new File(appFile).lastModified();
你可以得到系統的當前日期,並輕鬆地檢查是否7天爲過,你可以有標誌,檢查是否API命中或不。
您可以使用服務或在用戶啓動活動時執行此操作。
就像我告訴過你的。這是代碼。我已經提到了你需要實現服務器請求的地方。你不需要改變其他東西。玩的開心。
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class MainActivity extends Activity {
SharedPreferences sharePref;
String endTime, currentTime;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.child);
sharePref=getSharedPreferences("App", Context.MODE_PRIVATE);
if(sharePref.getBoolean("isFirstTime", true)) {
checkFinalTime();
}
else if (!sharePref.getBoolean("isRequestSend", false)){
checkRemainingTime();
}
}
private void checkFinalTime(){
Calendar c = Calendar.getInstance();
c.add(Calendar.DAY_OF_YEAR, 7);
endTime = String.valueOf(c.get(Calendar.MONTH) + 1) + "/" + String.valueOf(c.get(Calendar.DAY_OF_MONTH)) + "/" +
String.valueOf(c.get(Calendar.YEAR)) + " " + String.valueOf(c.get(Calendar.HOUR_OF_DAY)) + ":" +
String.valueOf(c.get(Calendar.MINUTE)) + ":" + String.valueOf(c.get(Calendar.SECOND));
Log.d("End Time", endTime);
SharedPreferences.Editor editor = sharePref.edit();
editor.putBoolean("isFirstTime", false);
editor.putString("endTime", endTime);
editor.apply();
}
private void checkRemainingTime() {
Calendar c = Calendar.getInstance();
currentTime = String.valueOf(c.get(Calendar.MONTH) + 1) + "/" + String.valueOf(c.get(Calendar.DAY_OF_MONTH)) + "/" +
String.valueOf(c.get(Calendar.YEAR)) + " " + String.valueOf(c.get(Calendar.HOUR_OF_DAY)) + ":" +
String.valueOf(c.get(Calendar.MINUTE)) + ":" + String.valueOf(c.get(Calendar.SECOND));
endTime = sharePref.getString("endTime", null);
Log.d("Current Time", currentTime);
Log.d("End Time", endTime);
if (endTime != null) {
SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
Date d1 = null;
Date d2 = null;
try {
d1 = format.parse(currentTime);
d2 = format.parse(endTime);
long diff = d2.getTime() - d1.getTime();
if (diff >= 0) {
// Do the Server Request here. Don't delete anything.
Log.d("Diff", String.valueOf(diff));
SharedPreferences.Editor editor = sharePref.edit();
editor.putBoolean("isRequestSend", true);
editor.apply();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
保重
從服務器端使用cronejob –
等待幾分鐘,我送你整個代碼 –