не заносятся данные в дб в другом потоке

Удалил, что не относится, чтоб точно не в этом было дело.

Есть 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 до присвоения введите сюда описание изображения

введите сюда описание изображения


Ответы (0 шт):