SQLiteDatabase db = helper.getReadableDatabase();
Cursor cur = db.query("i", null, null, null, null, null, null);
SimpleCursorAdapter adapter = new SimpleCursorAdapter(Main.this, R.layout.list, cur, new String[]{"_id", "name", "favourite"}, new int[]{R.id.textView1, R.id.textView2, R.id.textView3}, 0);
ListView.setAdapter(adapter);红米Note5Plus(RAM:4GB)可正常运行,
红米Note3(RAM:3GB)闪退。
已定位到问题出现在以上代码。个人考虑是,读取(或查询)数据库可能比较费时,
需在线程中执行。
请问以上代码如何修改为在子线程中执行呢?不胜感激!
Cursor cur = db.query("i", null, null, null, null, null, null);
SimpleCursorAdapter adapter = new SimpleCursorAdapter(Main.this, R.layout.list, cur, new String[]{"_id", "name", "favourite"}, new int[]{R.id.textView1, R.id.textView2, R.id.textView3}, 0);
ListView.setAdapter(adapter);红米Note5Plus(RAM:4GB)可正常运行,
红米Note3(RAM:3GB)闪退。
已定位到问题出现在以上代码。个人考虑是,读取(或查询)数据库可能比较费时,
需在线程中执行。
请问以上代码如何修改为在子线程中执行呢?不胜感激!
new Thread{
@Override
public void run() {
SQLiteDatabase db = helper.getReadableDatabase();
Cursor cur = db.query("i", null, null, null, null, null, null);
SimpleCursorAdapter adapter = new SimpleCursorAdapter(Main.this, R.layout.list, cur, new String[]{"_id", "name", "favourite"}, new int[]{R.id.textView1, R.id.textView2, R.id.textView3}, 0);
ListView.setAdapter(adapter);
}
}.start();
子线程不能更新UI线程控件,ANR……
子线程不能更新UI线程控件,ANR……
Handler通知一下就行了
子线程不能更新UI线程控件,ANR……
Handler通知一下就行了请问如何用Handler通知啊?谢谢!
子线程更新数据完后
handler.sendMessage 通知然后handler里的方法进行操作数据ui
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if(msg.what==0x110){
ListView.setAdapter(adapter);
}
}
}; new Thread{
@Override
public void run() {
SQLiteDatabase db = helper.getReadableDatabase();
Cursor cur = db.query("i", null, null, null, null, null, null);
SimpleCursorAdapter adapter = new SimpleCursorAdapter(Main.this, R.layout.list, cur, new String[]{"_id", "name", "favourite"}, new int[]{R.id.textView1, R.id.textView2, R.id.textView3}, 0);
handler.sendEmptyMessage(0x110);
}
}.start();
The local variable adapter may not have been initialized
The local variable adapter may not have been initialized大哥 adapter没初始化啊,这你都不知道,你得把adapter定义全局的