我需要在DB中保存一些对象.我在我的Dao课程中使用此代码.
public void saveActions(List<Action> actionList) throws SQLException {
for (Action action : actionList) {
createOrUpdate(action);
}
}
Run Code Online (Sandbox Code Playgroud)
有时我在createOrUpdate()函数中有CursorWindowAllocationException .
这是错误的堆栈跟踪.
java.lang.RuntimeException:在java. java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)的android.os.AsyncTask $ 3.done(AsyncTask.java:300)上执行doInBackground()时发生错误. util.concurrent.FutureTask.setException(FutureTask.java:222)at java.util.concurrent.FutureTask.run(FutureTask.java:242)at android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:231)at at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)java.lang.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:587)java.lang.Thread.run(Thread.java:841)引起:android.database.CursorWindowAllocationException:游标窗口分配2048 kb失败.在android.database.CursorWindow.(CursorWindow.java:109)的android.database.CursorWindow.(CursorWindow.java:100)在android.database.AbstractWindowedCursor.clearOrCreateWindow(AbstractWindowedCursor.java:198)的android.database.sqlite.在android.database.AbstractCursor的android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:133)的android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:139)上的SQLiteCursor.clearOrCreateWindow(SQLiteCursor.java:301) .moveToPosition(AbstractCursor.java:197)位于com.j256.ormlite.android的com.j256.ormlite.android.AndroidDatabaseResults.first(SourceFile:73)的android.database.AbstractCursor.moveToFirst(AbstractCursor.java:237). com.j256.ormlite.st上的com.j256.ormlite.stmt.StatementExecutor.ifExists(SourceFile:603)的com.j256.ormlite.dao.BaseDaoImpl.idExists(SourceFile:807)中的AndroidDatabaseConnection.queryForLong(SourceFile:234),com.j256.ormlite.dao .BaseDaoImpl.createOrUpdate(SourceFile:335)at com.deliveryclub.command.db.SaveActionsCommand.execute(Sourc)eFile:11)在ru.surfstudio.command.CommandExecutor.executeCommand(SourceFile:34)at ru.surfstudio.background.CommonAsyncTask.doInBackground(SourceFile:10)at android.os.AsyncTask $ 2.call(AsyncTask.java:288)在java.util.concurrent.FutureTask.run(FutureTask.java:237)... 4 more android.database.CursorWindowAllocationException:2048 kb的游标窗口分配失败.在android.database.CursorWindow.(CursorWindow.java:109)的android.database.CursorWindow.(CursorWindow.java:100)在android.database.AbstractWindowedCursor.clearOrCreateWindow(AbstractWindowedCursor.java:198)的android.database.sqlite.在android.database.AbstractCursor的android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:133)的android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:139)上的SQLiteCursor.clearOrCreateWindow(SQLiteCursor.java:301) .moveToPosition(AbstractCursor.java:197)位于com.j256.ormlite.android的com.j256.ormlite.android.AndroidDatabaseResults.first(SourceFile:73)的android.database.AbstractCursor.moveToFirst(AbstractCursor.java:237). com.j256.ormlite.st上的com.j256.ormlite.stmt.StatementExecutor.ifExists(SourceFile:603)的com.j256.ormlite.dao.BaseDaoImpl.idExists(SourceFile:807)中的AndroidDatabaseConnection.queryForLong(SourceFile:234),com.j256.ormlite.dao .BaseDaoImpl.createOrUpdate(SourceFile:335)at com.deliveryclub.command.db.SaveActionsCommand.execute(Sourc)eFile:11)在ru.surfstudio.command.CommandExecutor.executeCommand(SourceFile:34)at ru.surfstudio.background.CommonAsyncTask.doInBackground(SourceFile:10)at android.os.AsyncTask $ 2.call(AsyncTask.java:288)在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java)的android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:231)中的java.util.concurrent.FutureTask.run(FutureTask.java:237) 1112)java.lang.Thread.run上的java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:587)(Thread.java:841)
UPD Action类
@SuppressWarnings("serial")
@DatabaseTable(tableName = "Action")
public class Action implements Serializable {
public static final …Run Code Online (Sandbox Code Playgroud) 我有一个带有主导航图的应用程序模块和带有它自己的导航图的功能模块。功能导航包含在主导航图中。因此功能片段和导航图对应用程序模块导航图一无所知。我需要将堆栈从主图中的特征片段 A 弹出到片段 B。实现这一目标的最佳方法是什么?