我正在使用Volley将存储在本地数据库中的一些数据发送到服务器.问题是当我有大量条目(例如500)时,我收到此错误:
java.lang.OutOfMemoryError: pthread_create (1040KB stack) failed: Try again
at java.lang.Thread.nativeCreate(Native Method)
at com.android.volley.RequestQueue.start(RequestQueue.java:141)
at com.android.volley.toolbox.Volley.newRequestQueue(Volley.java:66)
at com.android.volley.toolbox.Volley.newRequestQueue(Volley.java:66)
at mypackageName.SomeClass.upload(SomeClass)
at mypackageName.MyClass$MyThred.run(SomeClass.java:387)
Run Code Online (Sandbox Code Playgroud)
这就是我从光标检索数据并进行发布的方法
private class UploadDataThred extends Thread {
@Override
public void run() {
SomeSQLiteHelper someSQLiteHelper = new SomeSQLiteHelper(context);
someSQLiteHelper.getWritableDatabase();
Cursor result = someSQLiteHelper.getAllEvents();
DataUploader dataUploader = new DataUploader(context);
while (result.moveToNext()) {
Build.logError("We're looping!");
while (!waitingForResponse) {
try {
Thread.sleep(4000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
dataUploader.upload(result.getString(0), false, result.getString(1), result.getString(2), result.getString(3), result.getString(4), result.getString(5), result.getString(6), result.getString(7), result.getString(8));
}
someSQLiteHelper.close();
} …Run Code Online (Sandbox Code Playgroud) 我是新手Fragments和自定义ListView适配器.有人可以帮我一把吗?
我有我的Fragment地方ListView
public class RecordingListFragment extends Fragment implements OnItemClickListener {
ListView mListView;
TextView emptyView;
Button options, delete,edit;
ArrayList<String> recordings = null;
RecordingsListAdapter mAdapter;
public RecordingListFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.recording_list_fragment, container,false);
options = (Button) rootView.findViewById(R.id.options);
edit = (Button) rootView.findViewById(R.id.edit);
delete = (Button) rootView.findViewById(R.id.delete);
mListView = (ListView) rootView.findViewById(R.id.list);
emptyView = (TextView) rootView.findViewById(R.id.empty);
mAdapter = new RecordingsListAdapter(this, recordings);
mListView.setAdapter(mAdapter);
mListView.setEmptyView(emptyView);
mListView.setOnItemClickListener(this);
return rootView;
}
} …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建 sqlite 数据库的备份,并且想首先刷新数据库中 WAL 文件的内容。
这是我的 SQLiteOpenHelper:
public class MyDBHelper extends SQLiteOpenHelper {
private Context mContext;
private static MyDBHelper mInstance = null;
private MyDBHelper(final Context context, String databaseName) {
super(new MYDB(context), databaseName, null, DATABASE_VERSION);
this.mContext = context;
}
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
public static MyDBHelper getInstance(Context context) {
if (mInstance == null) {
mInstance = new MyDBHelper(context, DATABASE_NAME);
}
return mInstance;
}
private void closeDataBase(Context context) …Run Code Online (Sandbox Code Playgroud) 我有一个安装了2种风格的android项目.如何通过具有特定风味的Jenkins进行构建?这是我在build.graddle中的风格:
productFlavors{
flavour 1 {
applicationId "app_id"
resValue "string", "app_name", "Flavour 1 app name"
.......
}
flavour 2 {
applicationId "app_id2"
resValue "string", "app_name", "Flavour 2 app name"
.......
}
Run Code Online (Sandbox Code Playgroud)
}
先感谢您!
抱歉,这是一个愚蠢的问题。我试图熟悉 Kotlin 并遇到了一个问题。我有一个 kotlin 应用程序,我使用 Room 存储数据。
这是我的实体类:
@Entity
data class Link(@PrimaryKey(autoGenerate = true) var _id: Int,
@ColumnInfo(name = "link_url") var linkUrl: String?,
@ColumnInfo(name = "timestamp") var timestamp: Long?)
Run Code Online (Sandbox Code Playgroud)
如何在Link不指定 的情况下创建新实例_id?
IE
var link: Link = Link("url", 12334)
先感谢您!
我有一个应用程序与本地数据库(房间)和服务,POSTs所有"事件"来自数据库使用retrofit 2和rxjava.当我发送大量POSTs(即1500+)时,应用程序会抛出一个OutOfMemoryException.我认为这是因为每次客户端发送新POST时它都会启动一个新线程.有没有办法阻止retrofit/ rxJava创建这么多线程?或者等待服务器响应是否更好?这是我的代码:
从本地db检索所有事件的类
public class RetreiveDbContent {
private final EventDatabase eventDatabase;
public RetreiveDbContent(EventDatabase eventDatabase) {
this.eventDatabase = eventDatabase;
}
@Override
public Maybe<List<Event>> eventsList() {
return eventDatabase.eventDao().getAllEvents()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
}
Run Code Online (Sandbox Code Playgroud)
接下来,我有一个服务,它通过db事件列表迭代并发布所有这些服务.如果后端发回成功,则从本地数据库中删除该事件.
private void sendDbContent() {
mRetreiveDbContent.eventsList()
.subscribe(new MaybeObserver<List<Event>>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onSuccess(final List<Event> events) {
Timber.e("Size of list from db " + events.size());
final CompositeDisposable disposable = new CompositeDisposable(); …Run Code Online (Sandbox Code Playgroud)