【发布时间】:2021-01-31 15:10:36
【问题描述】:
我对编程和 android 很陌生,并尝试编写我的第一个应用程序。我想在手机重启后重新安排通知。当我试图访问数据库时,我坚持 onHandleIntent()。没有发生任何事情,也没有错误。
Event.class
@Entity(tableName = "event_table")
public class Event {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "_id")
Long id;
@NonNull
@ColumnInfo(name = "event_title")
private String mEventTitle;
@NonNull
@ColumnInfo(name = "event_note")
private String mEventNote;
public Event(@NonNull String eventTitle, String eventNote) {
this.mEventTitle = eventTitle;
this.mEventNote = eventNote;
}
public String getEventTitle() {
return this.mEventTitle;
}
public String getEventNote() {
return this.mEventNote;
}
}
DAO
@Dao
public interface EventDao {
...
@Query("SELECT * FROM event_table")
List<Event> alarmReschedule();
}
重新调度器
public class Rescheduler extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "publisher onReceive");
if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {
Intent i = new Intent(context, MyService.class);
context.startService(i);
}
}
}
我的服务
公共类 MyService 扩展 IntentService {
private static final String TAG = MyService.class.getSimpleName();
public MyService(){
super("MyService");
Log.d(TAG, "constructor");
}
我相信这里出了点问题 (onHandleIntent())。
@Override
protected void onHandleIntent(@Nullable Intent intent) {
Log.d(TAG, "onHandelIntent");
EventRoomDatabase db = EventRoomDatabase.getDatabase(this);
EventDao eventDao = db.eventDao();
List<Event> notSended = eventDao.alarmReschedule();
Log.d(TAG, "list size:" + notSended.size());
//Retern list to other broadcastReceiver for reschedul notificatons
//reternList(notSended);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return START_NOT_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
/*reternList(){
...
}*/
}
我将非常感谢您的任何帮助和建议。
【问题讨论】: