2016-09-08 87 views
-2

我正在開發一個應用程序,其中的情景是這樣的,當用戶將應用程序保存在他們的設備中時,然後在7天后,我必須發送服務器請求來通知服務器這個問題。我該怎麼做。如何在7天后只發送一次服務器請求?

注意: - 我只需要在7天后發送服務器請求,一次不會在7天后再次發送。

+0

從服務器端使用cronejob –

+0

等待幾分鐘,我送你整個代碼 –

回答

0

嘗試使用Timer來安排「向服務器任務發送請求」,類似這樣的事情,請更改爲相關參數。

TimerTask tasknew = new TimerSchedulePeriod(); 
Timer timer = new Timer(); 

// scheduling the task at interval 
timer.schedule(tasknew,100, 100); 
0

這可能對你有幫助。

您可以獲取應用程序從

PackageManager pm = context.getPackageManager(); ApplicationInfo appInfo = pm.getApplicationInfo("app.package.name", 0); String appFile = appInfo.sourceDir; long installed = new File(appFile).lastModified();

安裝時間

你可以得到系統的當前日期,並輕鬆地檢查是否7天爲過,你可以有標誌,檢查是否API命中或不。

您可以使用服務或在用戶啓動活動時執行此操作。

2

就像我告訴過你的。這是代碼。我已經提到了你需要實現服務器請求的地方。你不需要改變其他東西。玩的開心。

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(); 
     } 
    } 
} 
} 

保重

+0

樣,如果應用沒有開啓 – Sandeep

+0

,也不會在後臺 – Sandeep

+0

你已經這樣做了什麼使用此代碼 – Sandeep