我有这个代码,这是我发现的一个例子,我是新的,仍在学习android所以请我知道如何在阅读表中添加延迟时需要一些帮助
例如在这段代码中我插入2行然后读取它们....我想要做的是读取第一行并等待5秒例如然后读取第二行并等待五秒.... ????
这是代码:
package net.learn2develop.Database;
import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.widget.Toast;
public class DatabaseActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
DBAdapter db = new DBAdapter(this);
//---add 2 titles---
db.open();
long id;
id = db.insertTitle(
"0470285818",
"java ++ :)",
"someone");
id = db.insertTitle(
"047017661X",
"Professional Programming",
"someone2");
db.close();
//---get all titles---
db.open();
Cursor c = db.getAllTitles();
if (c.moveToFirst())
{
do {
DisplayTitle(c);
} while (c.moveToNext());
}
db.close();
}
public void DisplayTitle(Cursor c)
{
Toast.makeText(this,
"id: " + c.getString(0) + "\n" +
"ISBN: " + c.getString(1) + "\n" +
"TITLE: " + c.getString(2) + "\n" +
"PUBLISHER: " + c.getString(3),
Toast.LENGTH_LONG).show();
}
}
答案 0 :(得分:1)
您不应该在主线程中放置任何长时间运行的函数。 onCreate必须总是快速执行然后返回,否则它们可能会被Android操作系统杀死为ANR(应用程序无响应)。
考虑使用TimerTask,让你的查询获得第n条记录,每次递增n。请注意,TimerTask将在一个线程中运行您的方法,您只能从主线程进行UI调用。使用Activty.runOnUiThread()来解决这个问题。
答案 1 :(得分:0)
答案 2 :(得分:0)
正确的方法 - 它不会阻止你的主线程,因此UI保持响应:
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
// Get new entry
}, 5000); // 5000 miliseconds