2017-07-16 23 views
0

我寧願在編寫Android應用程序時使用初學者。現在我開始編程,它讀取一個網頁並將其中的一些數據保存到數據庫/表中。 我想補充說,該應用程序需要在後臺服務的網站,並將其與數據庫進行比較。那麼它應該彈出一個通知在你的方便,如果事情已經改變。問題是,即時通訊已經在MainActivity中使用DatabaseHelper類創建數據庫,所以當我想要在服務類中添加一些數據庫時,我需要MainActivity意圖,但我不知道如何。在後臺服務中寫入數據庫 - Android Studio/Java

相關的代碼在MainActivity:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    myDb = new DatabaseHelper(this); 

    AlarmManager alarmManager = (AlarmManager) MainActivity.this.getSystemService(MainActivity.this.ALARM_SERVICE); 
    Intent startServiceIntent = new Intent(MainActivity.this,Hintergrundservice.class); 
    PendingIntent startServicePendingIntent = PendingIntent.getService(MainActivity.this, 0, startServiceIntent, 0); 
    c.setTimeInMillis(System.currentTimeMillis()+1000*10); 
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(),1000*10,startServicePendingIntent); 
} 

相關DatabaseHelper類:

public DatabaseHelper(Context context) { 
    super(context, DATABASE_NAME, null, 1); 
} 

@Override 
public void onCreate(SQLiteDatabase db) { 
    db.execSQL("create table Vertretungsplan (ID INTEGER PRIMARY KEY AUTOINCREMENT,DATUM TEXT, TAG TEXT, KLASSE TEXT, STUNDE TEXT, LEHRER TEXT, FACH TEXT, RAUM TEXT, LEHRERVON TEXT, FACHALT TEXT)"); 
} 

而這就是目前backgroundservice類:

public int onStartCommand(Intent intent, int flags, int startId) { 

    Toast.makeText(getApplicationContext(), "Hintergrundprozess wurde ausgeführt!", Toast.LENGTH_SHORT).show(); 
    Log.d("MyActivity","Hintergrundprozess"); 
    //write into Database 
    stopSelf(); 

    return super.onStartCommand(intent, flags, startId); 
} 
+0

你爲什麼認爲你需要MainActivity意圖? – Juan

+0

首先,我認爲您需要將您的創建查詢更改爲: 「CREATE TABLE IF NOT EXISTS ....」 –

+0

之後,我找不到您將當前數據庫與新傳入數據進行比較的位置 –

回答

0

您應該能夠創建第二個實例DatabaseHelper在您的服務。