Когда устройство завершает работу, оно передает намерение и, зарегистрировавшись в этом эфире, вы можете получить вызов:
public class YourReceiverName extends BroadcastReceiver{
@Override
public void onReceive(final Context context, Intent intent) {
if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)){
//Do your task here....
}
}
}
добавить разрешение в файл манифеста:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
и зарегистрируйте этого получателя в файле манифеста:
<receiver android:name="Your receiver name">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
и для базы данных, это зависит от вас, как вы справляетесь с этим и что требует ваше приложение.