2016-04-25 8 views
1

私は毎朝これを朝に走ろうとしています。どのように私はそれが私のためにそれは1日に1回作ることができます。以下は私のコードですが、動作しません。毎日アンドロイドスタジオを実行します

public final class FetchMail extends TimerTask { 
DatabaseHelper myDb; 
SQLiteDatabase db = myDb.getReadableDatabase(); 


public static void main (String... arguments) { 
    TimerTask fetchMail = new FetchMail(); 

    Timer timer = new Timer(); 
    timer.scheduleAtFixedRate(fetchMail, getTomorrowMorning4am(), fONCE_PER_DAY); 
} 


@Override 
public void run(){ 

    Cursor t = db.rawQuery("SELECT ID_TARGET,TARGET,LEAD_TIME FROM TARGET_TABLE WHERE (LEAD_TIME < date('now')) AND AMOUNT > 0", null); 

if (t != null) { 
    if (t.moveToFirst()) { 
     do { 

      String tmpName = t.getString(t.getColumnIndex("TARGET")); 


      String selectQuery = ("INSERT INTO GAMIFICATION(ID,HISTORY,STATE_POINTS) VALUES(NULL,'Points: " + tmpName + "',-1)"); 
      db.execSQL(selectQuery); 




     }while (t.moveToNext()); 
    } 
} 

} 


private final static long fONCE_PER_DAY = 1000*60*60*24; 

private final static int fONE_DAY = 1; 
private final static int fFOUR_AM = 4; 
private final static int fZERO_MINUTES = 0; 

private static Date getTomorrowMorning4am(){ 
    Calendar tomorrow = new GregorianCalendar(); 
    tomorrow.add(Calendar.DATE, fONE_DAY); 
    Calendar result = new GregorianCalendar(
      tomorrow.get(Calendar.YEAR), 
      tomorrow.get(Calendar.MONTH), 
      tomorrow.get(Calendar.DATE), 
      fFOUR_AM, 
      fZERO_MINUTES 
    ); 
    return result.getTime(); 
}} 

MainActivityに何かを追加する必要がありますか? MainActivityが最初のページであるためです。

+1

代わりにAlarmManagerを使用してください。具体的にはsetRepeating ... – drulabs

答えて

1

あなたの質問は「スケジュールされたバックグラウンドタスクを実行する方法」だと思いますか?アクティビティに依存することは助けになりません(アクティビティのドキュメントを含む状態テーブルを参照してください)Serviceより幸せかもしれません。Application

幸運を祈ってください。

関連する問題