Android :: Thread-safety When Creating Methods - Activities Which Interact With SQLite Database
Sep 20, 2010
I am creating an app which allows for many different Activities to be started from a TabActivity(up to ~25). Most of the activities require data from the sqlite database, so when onCreate is run, an AsyncTask creates an SQLiteOpenHelper object(which will open a readable/writable database), runs a query, data is retrieved, and everything is then closed.
I was just testing messing around to see if i could break something, so i added every Activityto the TabActivity's TabHost. I then started mashing each tab as quickly as possible.
I noticed that very quickly i began to see in the LogCat: Caused by: android.database.sqlite.SQLiteException: database is locked: BEGIN EXCLUSIVE; and the app proceeded to die.
Typically there will only be about 4-6 tabs(i can just limit the user anyway) for the TabHost. I haven't been able to break anything with a small amount of tabs to mash, but i am still worried that maybe i am accessing the database in a poor way.
How can i prevent my SQLiteDatabase objects to cause a lock?
If i create a ContentProvider will that eliminate the possibility of database locking?
Do you have any suggestions for changes I could make for accessing data from an SQLiteDatabase?
I ended up taking the approach of using the Application class and storing 1 SQLiteOpenHelper and trying my best to keep it synchronized. This seems to be working great - i put all my 25 activities in the TabHost and mashed away on them with no errors.
I am calling ((SQLiteDbApplication)getApplication()).setDbHelper(new DBHelper(this, Constants.DB_NAME, null, Constants.DB_VERSION_CODE)); method(shown below) in every onCreate() in my activities
Any further suggestions to this approach or to the changes i made using this Application class?
CODE:...................
View 3 Replies
May 23, 2009
I am new to android and I have a problem in creating a database.
public class database extends ListActivity {
/** Called when the activity is first created. */
private final String MY_DATABASE_NAME = "myCoolUserDB.db";
private final String MY_DATABASE_TABLE = "t_Users";
Context c;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ArrayList<String> results = new ArrayList<String>();
setContentView(R.layout.main);
SQLiteDatabase mydb=null;
try
{
mydb.openOrCreateDatabase(MY_DATABASE_NAME, null);
} catch(Exception e){}
}}
When I run this code it throws a run time exception.
View 4 Replies
View Related
Jun 14, 2010
I want to create a SQLite database in my app, which contains three tables, I will add data into tables and will use them later on.but I like to keep database ,as if when app is first time installed it checks whether the database exist or not, if exists it updates it else if not then creates a new database.further more I am making a DB class to facilitate my app,so I wont be creating an activity for my database creation.if there are possible advices, please share with me
View 3 Replies
View Related
Jun 24, 2010
I'm in the middle of writing myself an app and have run into a problem concerning the use of the same SQLite database within multiple activities.
I have one activity that is used to input and store data and multiple activities that need to then read that data. Within the first activity, it has no problem inputting the data into the database, but when I go to have the other activity read the data, it tells me the database is empty. Obviously I'm doing something wrong in my handling of this shared database.
Right now, I have a DataHelper class that handles everything. In each activity, I create a DataHelper object which then calls the openOrCreateDatabase() method. I then close the database upon exiting the activity. Obviously this isn't the right way to do it.
So, my questions is, what is the correct way to set up an SQLite database in an Android application and then access it in multiple activities?
View 7 Replies
View Related
Apr 27, 2010
I have been trying to find a discussion on the best way to handle a common sqlite database which is shared by multiple Activities (or multiple Activities and Services). This is all in the same application.
It seems that if each Activity has:
CODE:.........................
View 14 Replies
View Related
Jul 20, 2010
I am developing an app which requires me to write to an SQLiteDatabase in one activity and access it from another activity . I am facing a problem implementing this. Any suggestions/ideas as to how we can share the database across multiple activities?
View 2 Replies
View Related
Jan 19, 2010
Is there something like a FileDialog available? From previous threads, it appears there isn't one.
If not, has someone written one?
I want to allow a user to
a) Specify a folder/filename on storage for creating an SQLite database.
b) Specify an existing file/folder on storage card for opening as an SQLite Database.
View 4 Replies
View Related
Oct 12, 2009
Can two or more Android Activities open an sqlite3 database for write?
I have two Activities that need to insert data into the same sqlite database. When the second Activity calls SQLiteOpenHelper.getWriteableDatabase() an IllegalStateException is thrown with the message "SQLiteDatabase created and never closed".
I've been able to avoid the Exception by making my database object a singleton but I'm thinking there must be a better way.
View 2 Replies
View Related
Jul 21, 2009
I'm trying to work with a web service (that I have no control over) that returns a SQLite database when you query it. Is there any way to do this?
View 3 Replies
View Related
Jun 20, 2010
I have Activity A and Activity B. I want to access a method in Activity A from Activity B. This is my method:
Activity A extends activity{
public void save(){
} }
View 5 Replies
View Related
Nov 24, 2010
Need help closing/accessing my views in a simple app (included an img of my program layout) but I might have been too confusing. Basically, I have an app that has a main menu where the user can click a button to open a camera. The user then snaps a photo and it is displayed on a page. The user will then click another button that detects faces. If faces are detected, the user is sent to a final page that shows the cropped face, etc. I give the user the ability to return to the main menu or snap a new photo.
Let's say a new photo is snapped and the user does it a few more times. Now I have multiple saved instances of old snapped photos (presented on the layout). How do I kill the previous instance (the layout from before he decided to snap a new photo)? So when I try to close the app it doesn't go back to the previous instance (displayed layout of said snapped photo). I am so confused on this one thing.
View 1 Replies
View Related
Aug 23, 2010
I'm trying to deploy an application with an existing SQLite database.I've been reading though the examples that are posted but they are always missing some part of the class. I feel like I'm trying to bake muffins but no one told me to use baking powder.Can someone post a full database helper class for depoying an SQLite database on Android? Edit : Delete old code because it doesn't work.
View 2 Replies
View Related
Apr 12, 2010
I'm currently developing a Field-Service application that stores data in the local sqlite database on an android device. At some point, usually after completing the data collection rounds, the local sqlite db is to be synchronized to a remote sybase db on the server.Any suggestions as to how this could be achieved or engineered as a solution? Or even better, are there alternatives to synchronizing data in such an application?
View 1 Replies
View Related
May 5, 2010
I have some activities in my project like, Alerts,HomePage , Calculator etc. What i want to accomplish is to create tabs for all these activities and insert images for these. When we touch the tab the corresponding activity must load. I have done it using the menu options. But i must accomplish this using tabs. The tabs must also be at the bottom of the page... Should i create another class Tabs.java and tabs.xml or should i write tab host for each activity...?
View 2 Replies
View Related
Jul 22, 2010
How does one go about adding a custom SQLite function from within the Android sqlite API? I have a function (written in C) that I'm able to add using the C API outside of Android as described here: http://www.sqlite.org/c3ref/create_function.html.
View 4 Replies
View Related
Jun 20, 2010
I want to have an options menu that is available to all Activities in my app (on pressing the MENU button). I've been doing this by creating it in onCreateOptionsMenu(Menu menu) for each Activity but this seems redundant. Is there a way to create it in one place and have it available in all Activities?
View 1 Replies
View Related
Aug 20, 2010
I'm caching image files as a blob in a SQLite database. I have a similar application on another platform that does the same thing with the same image files. The databases on both platforms report the exact same size for the same images. So I think, but can't guarantee, that the image data is getting into the database intact.But when I try to create a Drawable, the console prints out "DEBUG/skia(267):decoder->decode returned false".
View 1 Replies
View Related
Aug 23, 2009
I have started a thread from one Activity and then i have started another activit from parent Activity . Now my Parrent Activity is in pause state . but what will happen to thread that I have started from parrent . I belive it will continue........not going in sleep state........
View 2 Replies
View Related
Apr 18, 2010
I have started creating database for my application. It is working well. The data is also getting stored.But the issue is that i require dropping table, that already exists, every time i run the application.
But one thing i found is that whenever i change the version of the database in my code, the table gets dropped. But i would like to know whether it is possible to drop table without changing the version number of the database.
View 2 Replies
View Related
Dec 23, 2009
The database of my application need to be filled with a lot of data, so during onCreate(), it's not only some create table sql instructions, there is a lot of inserts. The solution I chose is to store all this instructions in a sql file located in res/raw and which
is loaded with Resources.openRawResource(id).
It works well but I face to encoding issue, I have some accentuated caharacters in the sql file which appears bad in my application. This
my code to do this : Code...
The solution I found to avoid this is to load the sql instructions from a huge static final string instead of a file, and all accentuated characters appears well.
But Isn't there a more elegant way to load sql instructions than a big static final String attribute with all sql instructions?
View 4 Replies
View Related
Feb 13, 2009
I'm new to Android, I just finished the Notepad Tutorials, where we can create SQLite Databases to save notes. So I wanted to know if it was possible to "import" my own SQLite database (not created with my App but with a 3rd-party software) to my project, and if the answer is yes, where should I save my SQLite databse and how can I have access to it.
View 9 Replies
View Related
Mar 25, 2010
I'm doing a application that will use a database with serialized object. The objects will be already serialized and the user will just display things. On a PC I would just make an XML but with android I'm not sure. Can I make an XML and "unpack" it when the user launch the application for the first time or should I do something else?
View 3 Replies
View Related
Mar 5, 2010
I put my database field in "assets" folder. And use the code from this blog to copy the database to "/data/data/my_packname/databases/", (This copy code i run it in the onCreate() method when i run this app) then use select * from ... to get data. But it gives me the exception: no such table. Someone told me that if i am attempting to copy the file in SQLiteOpenHelper's onCreate(), it's too late. So the copy file code can not copy the complete file. So i need to use adb or ddms to pull the database first? So, Anyone can teach me how to use my own databse?
View 3 Replies
View Related
Jun 3, 2010
The android docs say that it adds the runnable to the queue and it runs in the UI thread. What does this mean? So, for example, the same thread I use to create my layout is used to run the Runnable? What if I want it as an independent thread that executes while I am creating my layout and defining my activity?
View 2 Replies
View Related
Jun 6, 2011
Is there a way that I can use my own database when creating an app?
What I mean by that is that I want the app to start with a database already loaded so one doesn't have to be created when the app is started?
View 7 Replies
View Related
Feb 22, 2010
How to create two or more tables in one database in single class which extends sqliteopenhelper in one function oncreate.
View 2 Replies
View Related
Nov 18, 2009
I have a class like class My data{ String name; int data; Location[] locality.
View 8 Replies
View Related
Mar 23, 2010
How do I delete the sqlite database exists in my android? There is a db behind my android qro and delete the same
View 4 Replies
View Related
Aug 2, 2010
public void delete(String id, String name, String phonenumber, String time, String message)
{
String[] args={id};
getWritableDatabase().delete("texts", "_ID=?", args);
}
It works fine, and deletes the specified row. However, I also want to implement it so that I can delete the most recent (earliest date) entry in the database, which should be at the top of the table. I know I can do this by altering the last 2 parameters of delete, but I cannot figure out what to change them to.
View 1 Replies
View Related
Jan 25, 2010
Is possible update the records from SQLite from my Android Application1 from other Application2 Android
View 4 Replies
View Related