在这篇文章中,我们将带领您了解android–sqliteonCreate()问题我希望我的数据库创建一次,它不会改变,但我在onCreate()时无法创建数据的全貌,同时,我们还将为您介绍有关And
在这篇文章中,我们将带领您了解android – sqlite onCreate()问题我希望我的数据库创建一次,它不会改变,但我在onCreate()时无法创建数据的全貌,同时,我们还将为您介绍有关Android - 当 android 释放在 onCreate 中创建的数据的内存时会发生什么、Android GCM:未在onCreate()方法上获取注册令牌、Android SQLiteOpenHelper:为什么不调用onCreate()方法?、android sql无法创建数据库的知识,以帮助您更好地理解这个主题。
本文目录一览:- android – sqlite onCreate()问题我希望我的数据库创建一次,它不会改变,但我在onCreate()时无法创建数据
- Android - 当 android 释放在 onCreate 中创建的数据的内存时会发生什么
- Android GCM:未在onCreate()方法上获取注册令牌
- Android SQLiteOpenHelper:为什么不调用onCreate()方法?
- android sql无法创建数据库
android – sqlite onCreate()问题我希望我的数据库创建一次,它不会改变,但我在onCreate()时无法创建数据
public class EventsData extends sqliteOpenHelper { private static final String DATABASE_NAME = "events.db"; private static final int DATABASE_VERSION = 1; public EventsData(Context ctx) { super(ctx,DATABASE_NAME,null,DATABASE_VERSION); } @Override public void onCreate(sqliteDatabase db) { db.execsql("CREATE TABLE " + TABLE_NAME + " (" + _ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + TIME + " TEXT NOT NULL," + TITLE + " TEXT NOT NULL);"); //This doesn''t work.. db.execsql("INSERT INTO"+TABLE_NAME+"VALUES(null,''hello'',''android'');"); } @Override public void onUpgrade(sqliteDatabase db,int oldVersion,int newVersion) { db.execsql("DROP TABLE IF EXISTS " + TABLE_NAME); onCreate(db); } }
解决方法
db.execsql("INSERT INTO"+TABLE_NAME+"VALUES(null,''android'');
在TABLE_NAME周围缺少空格.如果你执行这一行,它就无法工作.
Android - 当 android 释放在 onCreate 中创建的数据的内存时会发生什么
如何解决Android - 当 android 释放在 onCreate 中创建的数据的内存时会发生什么?
假设我在 onCreate
中初始化了一堆东西,然后将应用程序带入后台一个小时。如果 Android 在我继续使用该应用程序时释放了在 onCreate
中初始化的内容,会发生什么情况?会再次调用 onCreate
吗?我之所以这么问是因为我考虑在 onResume
而不是 onCreate
中移动一些东西,如果再次调用 onCreate
,这是不必要的。
解决方法
如果 Android 释放在我继续使用应用程序时在 onCreate 内部初始化的内容会怎样?
一般来说,Android 不会这样做。 Android 可能终止您的进程,在这种情况下,一切都会消失,您将在下一次应用启动时从头开始。
但是,如果您的进程设法在后台存活了一个小时,那么大多数事情都会在您离开的地方保持原样。当您的应用移至后台时,某些库可能会专门尝试释放一些内存(例如,缓存在图像加载库中),以尝试降低您的进程被终止以释放系统 RAM 的可能性。
文档有 a bit of material on the process lifecycle。
onCreate 会被再次调用吗?
如果 Android 终止了您的进程,那么是的,将再次调用任何已启动活动的 onCreate()
。如果您的进程幸存下来,则 Activity 已经创建,因此不会再次调用 onCreate()
。 onStart()
和 onResume()
在任何一种情况下都会被调用。
文档有 some material on the activity lifecycle。
Android GCM:未在onCreate()方法上获取注册令牌
这是我想要打印GCM regID的onCreate()方法:
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final String regId = GCMRegistrar.getRegistrationId(this); GCM_regID = regId; System.out.println("GCM regId: "+GCM_regID);
在onCreate()中执行以下代码:
/** * Google Cloud Messaging - Getting server Url and device ID to send it * across Google server for the notification.. */ mGCMReceiver = new GCMReceiver(); mOnRegisteredFilter = new IntentFilter(); mOnRegisteredFilter.addAction(Constants.ACTION_ON_REGISTERED); if (Constants.SENDER_ID == null) { // mStatus.setText("Missing SENDER_ID"); return; } if (Constants.SERVER_URL == null) { // mStatus.setText("Missing SERVER_URL"); return; } GCMRegistrar.checkDevice(this); GCMRegistrar.checkManifest(this); if (!regId.equals("")) { sendIdToServer(regId); } else { GCMRegistrar.register(getApplicationContext(),Constants.SENDER_ID); } sendIdToServer(regId); }
按照以下教程之一的指导,通过这些方法将GCM_regId发送到服务器:
/** * GCM - sending the data in json format to server db * */ public void sendIdToServer(String regId) { (new SendRegistrationIdTask(regId)).execute(); GCM_regID = regId; } private class GCMReceiver extends broadcastReceiver { @Override public void onReceive(Context context,Intent intent) { String regId = intent .getStringExtra(Constants.FIELD_REGISTRATION_ID); token = regId; } } private final class SendRegistrationIdTask extends AsyncTask<String,Void,HttpResponse> { // private String mRegId; public SendRegistrationIdTask(String regId) { // mRegId = regId; } @Override protected HttpResponse doInBackground(String... regIds) { // String url = Constants.SERVER_URL + "/register"; return null; } @Override protected void onPostExecute(HttpResponse response) { if (response == null) { return; } StatusLine httpStatus = response.getStatusLine(); if (httpStatus.getStatusCode() != 200) { Log.e(Constants.TAG,"Status: " + httpStatus.getStatusCode()); return; } } }
我不这么认为,这里需要GCMIntentService类来解决我的问题.请仔细研究并帮助我解决这个问题.
我可以在onRegistered()上的GCMIntentService类中打印.在这里:
@Override protected void onRegistered(Context context,String regId) { Intent intent = new Intent(Constants.ACTION_ON_REGISTERED); intent.putExtra(Constants.FIELD_REGISTRATION_ID,regId); context.sendbroadcast(intent); }
我必须在onCreate()上的MainActivity上打印regId.
解决方法
protected void onRegistered(Context arg0,String arg1) { Logger.d(arg0,"REG ID="+arg1); regID = arg1; }
这是在Reg完成后调用的方法.所以对于我的情况,regID我把它当作一个静态字符串并且正在访问它.或者就像你想要活动B上的regID一样,最好在活动A上注册它,并通过GCMIntent类中的上述方法中的静态字符串检索它.
Android SQLiteOpenHelper:为什么不调用onCreate()方法?
我正在尝试制作我的第一个Android应用程序。我注意到,SQLiteOpenHelper.onCreate()
如果数据库不存在,则不会调用该方法来创建表。但是,onCreate()
即使我尝试调试,该方法也无法正常工作。
请查看下面的代码,并给我任何建议。任何帮助将不胜感激。
public class NameToPinyinActivity extends Activity { DatabaseOpenHelper helper = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.nametopinyin); Button searchButton = (Button) findViewById(R.id.search); searchButton.setOnClickListener(new ButtonClickListener()); helper = new DatabaseOpenHelper(NameToPinyinActivity.this); }public class DatabaseOpenHelper extends SQLiteOpenHelper { /** DB Name */ private static final String DB_NAME = "pinyin"; /** CREATE TABLE SQL */ private static final String CREATE_TABLE_SQL = "CREATE TABLE UNICODE_PINYIN" + "(ID INTEGER PRIMARY KEY AUTOINCREMENT, " + "UNICODE TEXT NOT NULL, PINYIN TEXT NOT NULL)"; public DatabaseOpenHelper(Context context) { super(context, DB_NAME, null, 1); } @Override public void onCreate(SQLiteDatabase db) { db.beginTransaction(); try { db.execSQL(CREATE_TABLE_SQL); db.setTransactionSuccessful(); } catch (Exception e) { e.printStackTrace(); } finally { db.endTransaction(); } }
答案1
小编典典我也遇到了 SQLiteOpenHelper的 麻烦。对我有用的是存储成员变量
SQLiteDatabase db;
在SQLiteOpenHelper子类中并调用
db = getWritableDatabase();
在构造函数中。
该问题的答案还包括一些有用的信息:SQLiteOpenHelper无法调用onCreate?
我希望这有帮助!
android sql无法创建数据库
public class MainActivity extends ActionBarActivity {@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SQLiteDatabase db = openOrCreateDatabase("student.db",MODE_PRIVATE, null);
String sql = "create table UserTb1(_id integer primary key autoincrement,usename,password)";
db.execSQL(sql);
String sql1 = "insert into UserTb1(_id,username,password) values(2013800057,''lihuabin'',285398)";
db.execSQL(sql1);
Cursor c = db.query("UserTb1",null,null,null,null,null,null);
if(c.moveToFirst()){
for(int i = 0;i < c.getCount();i++){
c.move(i);
int id = c.getInt(0);
String username = c.getString(1);
int password = c.getInt(2);
System.out.println(id + username + password);
}
}
}
}
关于android – sqlite onCreate()问题我希望我的数据库创建一次,它不会改变,但我在onCreate()时无法创建数据的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于Android - 当 android 释放在 onCreate 中创建的数据的内存时会发生什么、Android GCM:未在onCreate()方法上获取注册令牌、Android SQLiteOpenHelper:为什么不调用onCreate()方法?、android sql无法创建数据库等相关内容,可以在本站寻找。
本文标签: