не заносятся данные в дб в другом потоке
Удалил, что не относится, чтоб точно не в этом было дело.
Есть 2 активити, во вторую заносится новая записка в дб, первая на старте должна получать в список все элементы дб, но не получает - длинна как была 0, так и осталась 0. с alloMainThreadQuerry и dao в ui потоке работало
package com.example.tedit_with_rv_etc;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import com.muddzdev.styleabletoast.StyleableToast;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
WritingAdapter writingAdapter;
WritingsDao writingsDao;
List<Writings> writingList = new ArrayList<>();
RecyclerView recyclerView;
public static final String mainActivityKey = "MainActivityKey";
private Button deleteBtn, undoBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = findViewById(R.id.recycler_view_ma);
deleteBtn = findViewById(R.id.delete_item_btn_ma);
undoBtn = findViewById(R.id.undo_select_btn_ma);
// AppDatabase db = App.getInstance().getDatabase(this);
// writingsDao = db.writingsDao();
// writingList = writingsDao.getAll();
DbRunnableActions runnable = new DbRunnableActions("getAll", this, null, 0);
new Thread(runnable).start();
writingList = runnable.getWritingsList();
Toast.makeText(this, ""+writingList.size(), Toast.LENGTH_SHORT).show();
}
public void addMessage(View view) {
// if (!writingAdapter.isSelectMode()) {
Intent intent = new Intent(this, EditWriting.class);
// int size = writingList.size()+1;
// intent.putExtra(mainActivityKey, ""+size);
startActivity(intent);
// }
}
}
package com.example.tedit_with_rv_etc;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
public class EditWriting extends AppCompatActivity {
private EditText headEt;
private EditText textEt;
private String headStr, textStr;
int idInt = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_edit_writing);
headEt = findViewById(R.id.head_et_ew);
textEt = findViewById(R.id.text_et_ew);
}
public void saveText(View view) {
Writings writings = new Writings(1, "headStr", "textStr");
new Thread(new DbRunnableActions("insert",this, writings,0)).start();
Intent intentToMA = new Intent(this, MainActivity.class);
startActivity(intentToMA);
}
}
package com.example.tedit_with_rv_etc;
import android.content.Context;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
public class DbRunnableActions implements Runnable {
private String actionStr;
private Context context;
private Writings writing;
private List<Writings> writingsList = new ArrayList<>();
private WritingsDao writingsDao;
private int id;
public DbRunnableActions(String actionStr, Context context, Writings writing, int id) {
this.actionStr = actionStr;
this.context = context;
this.writing = writing;
}
@Override
public void run() {
AppDatabase db = App.getInstance().getDatabase(context);
writingsDao = db.writingsDao();
if (actionStr.equals("get")) writing = writingsDao.getByid(id);
if (actionStr.equals("insert")) writingsDao.insert(writing);
if (actionStr.equals("delete")) writingsDao.delete(writing);
if (actionStr.equals("getAll")) writingsList = writingsDao.getAll();
}
public List<Writings> getWritingsList() { return writingsList; }
public Writings getWriting() { return writing; }
}
package com.example.tedit_with_rv_etc;
import android.app.Application;
import android.content.Context;
import androidx.room.Room;
public class App extends Application {
private volatile static App instance;
private volatile AppDatabase database;
@Override
public void onCreate() {
super.onCreate();
instance = this;
if(database == null)
database = Room.databaseBuilder(this, AppDatabase.class,"databaseWritings3").build();
}
public static App getInstance(){
if(instance == null) instance = new App();
return instance;
}
public AppDatabase getDatabase(Context context){
if(database == null)
database = Room.databaseBuilder(context, AppDatabase.class, "databaseWritings3").build();
return database;
}
}
не вылетает, в дебаге размер списка 0 до присвоения

