I am developing an application in which i am getting data through Json which includes text, images both. When user runs my application for the first time, data should be stored somewhere so that next time he/she can run the app without using internet. Can anybody suggest me any solution?
Shared Preferences is the best option for you as it is permanent light-weight storage in android.An good example of shared preferences in android is to storing Highest score of game in your device.See here.
Related
... or can I acess it remotely? If yes, where/how?
To illustrate my question with an example:
If I want to implement a login function and an user creates an account: will his login information only be stored on his phone? (So he can only login on his phone on nowhere else?) Or is it stored somewhere else?
I'm quite confused at the moment and wasn't able to find good ressources zu answer my question (maybe someone knows a good tutorial?)
Thank you in advance for your answers!
There are mainly 3 ways to store data in android:
With the shared preferences, you can save data locally. Its limit is that when you close your app the data are deleted.
With SQLite the limit of the shared preferences is overcome. You can save data into a binary file stored locally in your phone. For use it you have to write some specific java code and inside it write in SQL sintax. It is used for example to keep the highest score in single player game, or simply to let the app remember description, text, user inputs.
With Firebase you can save data in a not local way, data are stored in a server. You can use it for example for develop a social, a game that need to share data with more users, when you have a multiuser application.
This is a data file storage overview, it could be useful too.
For login data it's better to use share preference instead of SQLite. If you use SQLite or Room or share preference, data are saved locally and you can't access them remotely.
I'm a new Android developer and could use some advice on a problem I've come across.
I have an app which is querying data from the Amazon Product API on almost every activity you open. I'm able to get the data, but the activities take forever to load because I'm constantly running API queries.
The app is basically a video game review app. It wouldn't be uncommon for users to load the same data for a game multiple times. I'm thinking that making api calls for the same data over and over again is very inefficient.
My question is in this scenario, should I be saving game data to a local, or even remote (Firebase) database every time data is retrieved from the Amazon API? And then whenever data needs to be retrieved, I check first to see if it's present in the database before making the API call?
If this is correct, where should I be saving the data (shared prefs, SQLlite, internal storage, etc.)? If not, what can I do to make the app pull & display data faster?
When you say that activities take forever to load, I assume that you are not making these calls from within the Activities. And lets answer your questions one by one.
1) Shared Prefs are not a good option. (Try to use Shared prefs only when you have a bunch of things to persist). While in this case if you want to save effort of writing helper classes for database you could serialize the data (Internal Storage). And its preferable to store data locally in my opinion.
2) Do not always request the data.Only update it when the user wants the data to be refreshed (hustle free, user presses a refresh button). Or you could update data after fixed time intervals. This can involve upgrading reviews in background even when the application is not running by starting Service using Alarm Manager. You will have to read about it though.
I wanted to know how to create something like this to save information, after a form has been filled out? This is from the App Timetable and I couldnt get any information on how to do this? Any Suggestions/Solutions?
Regards,
Michael
Refer this information on Android Developers website for Storage Options in Android.
You will read if you need to store large amount of data you need to create a Sqlite Database but if you need to save small amount of data then Shared Preferences will do.
Now you need to save and retrieve data from these storage options.
1) Shared Preferences Tutorial
2) Sqlite Database Tutorial
I assume till now you have done with saving and retrieving data . Now you need to match your current time with saved time in your app like a Alarm clock do. For that you need to implement a service that will tell you how much time is left in your task or what is upcoming event.
Tutorial on service.
Actually i want to know how to store data from my app in the device so that i can review the store data when i run the application again..
means in simple terms i want to say that suppose i have text box where i write some information..now when i click the submit button, this information will be save,so that when i open the application the stored data should be appear in the text box..
In all terms i want to say that i just want to stored data in the way that we are using database for storing data..so please anyone suggest me how that can be done in android.
if possible show with an example
Regards
Anshuman
If you have to store small amount of data, you can use SharedPreferences in Android.
If the data that you have to store is big/complex enough, try using SQLite database.
Still need help?
UPDATE: There's a tutorial that I wrote to demonstrate how to use SQLite database. check it out here. Although it copies existing database into device's memory, but other versions of it, which create database through code can also be devised from it.
A better tutorial is here : http://www.vogella.com/tutorials/AndroidSQLite/article.html
1) If you want to store data in table format then you can use SQLite database in android
2) If you don't want to store data in table format then you can store in SharedPreference
more info about SharedPreference here and here
Android comes with a built in SQLite database that you can use. I advice you to go trough this notepad tutorial. It teaches the basics of using Android SDK including different states of the android application as well as how to use SQLite with Android.
For storing simple key = value pairs, you can use Properties.
For data storage as in a database, you can use sqlite on android.
Android provides several options for you to save persistent application data. The solution you choose depends on your specific needs, such as whether the data should be private to your application or accessible to other applications (and the user) and how much space your data requires.
Your data storage options are the following:
Shared Preferences
Store private primitive data in key-value pairs.
Internal Storage
Store private data on the device memory.
External Storage
Store public data on the shared external storage.
SQLite Databases
Store structured data in a private database.
Network Connection
Store data on the web with your own network server.
Data Storage
My android app saves user information as serialized objects in a ".ser" file that's saved to internal storage.
The data can be stored and retrieved and written just fine but whenever the user installs an update to the app, all the data is erased.
I assume the file is deleted upon installation of an update.
My question is: how do I save data to internal storage without it getting deleted when users install updates?
Do I have to use a different method, like SharedPreferences or SQLite?
or can my FileOutputStream save persistently through updates?
If you're worried about it getting deleted on internal memory, why not write to the ext?
Hello Boron I've been using SharedPreferences for the purpose you are explaining. I don't think SQLite would be preferable because you might want to save the images and large information like Bio of the user.
I store all my user data in shared preference and I am almost positive that the data persists even on updating the application. This should solve your problem.
When you have to store the images I would suggest you to convert the image to base 64 or some string and store in SharedPreferences this reduces the chances of deleting of the image from mobile by user accidentally.
Happy Coding