Android :: Best Practices For Developing Bigger Applications On Android
Nov 24, 2010
I've already written some small Android Applications, most of them in one Activity and nearly no data that should be persistent on the device.
Now I'm writing an application that needs more Activities and I'm a bit puzzled about how to organize all this. My app will download some data parse it show it to the user and then show other activities depending on the data and the user interaction. Some of that data could be cached, some of it has to be downloaded every time. Some of that data should not be downloaded freshly at the moment the orientation changes, but it should on the moment the activity is created...
Another thing I'm confused about are things like a httpClient. I now for example create a new httpclient for every activity, the same thing for locationlisteners.
Are there books, a blogs or documentations with patterns, examples and advice on organizing larger apps build on android? Everything I found until now are get startet tutorials leaving me alone after 60 lines of code...
View 2 Replies
Jun 8, 2010
I've watched many of the Google IO talks and one that I'm trying to reproduce is "Developing Android REST client applications"[1]. In this talk Virgil suggests you should not execute your RESTful queries inside a Thread/AsyncTask spawned from your Activity (which I had been doing), instead you should use a more complex architecture that uses a combination of a ContentProvider and a Service. From what I understood the reason for this design was so your data was more persistent between app restarts, and so your queries don't disappear if your Activity starts/stops (e.g on a screen rotation). I buy into both those reasons hence I'm trying to implement this. On the slides[2] page 45 We have an Activity calling a ContentProvider. Now the ContentProvider checks its local database, if the content is not there it sends an Intent to a service which fetches the content, inserts it into the ContentProvider, then the ContentProvider calls back to the Activity (with a ContentObserver) and the Activity can carry on. The question I have is how is this callback setup. The ContentProvider exposes simple methods, query, insert, update, delete which don't seem easy to adapt to a callback interface. It could be implemented by a Cursor which is designed to block, but that could be problematic as you don't' want to block your UI Thread. I'd appreciate if anyone could make this clearer to me, or show me some code. I'm hoping the Twitter app will be open sourced soon which apparently uses this architecture.
View 16 Replies
View Related
Sep 1, 2010
I've read through the note of the topic "Developing Android REST Client Applications" from Google IO 2010, but I still have no idea on how to start. Can anyone show me a code example? Either the code for "Option A: Use a Service API" or "Option B: Use the ContentProvider API"
View 4 Replies
View Related
Aug 5, 2010
Why do android applications double in size once you download them?
For example... in the Android market - Documents to Go says the application is only 3.59mb BUT once I download it and look under Settings -> Applications -> Manage Applications to see what real size it is the application jumps to 8.05mb!
It seems like every single application is doing this. Why are these applications bigger than they actually are?
View 9 Replies
View Related
May 5, 2010
I am looking generally in to Android development.
I keep seeing information on root however I am unclear how this relates to general android app development.
I understand that there is an emulator however when I get to actually test the software on a phone does that phone have to be a rooted device or is this only required if you wish to edit the core features of the os?
Finally are there are any development disadvantages to rooting the device such as that is no longer behaves like other android phones I may deploy too?
View 2 Replies
View Related
Jul 1, 2010
I'm developing an application that would need to persist data locally in Android devices. I'm aware that Android provides two packages for database persistence, the normal "java.sql" and the "android.database.sqlite"? Which one is used more for persistence? I suppose that "android.database.sqlite" is the implementation of "java.sql",
View 1 Replies
View Related
Jan 27, 2010
We are trying to use a shared server (Ubuntu 9.10 64-bit) to develop Android applications. The thought is that a number of developers should use the shared server for development. We have overcome some obstacles such as setting the base port for DDMS. So it is possible to run multiple emulators and multiple instances of Eclipse. But we run into problems when trying to debug applications from Eclipse. It seems as though all emulators are trying to connect to the same Eclipse instance when debugging.
View 1 Replies
View Related
Apr 3, 2010
Has anyone managed to develop Android Applications using Eclipse on the Windows platform. I understand the ADB needs to recognise specific models of phone and wondered if the Tattoo is supported.
View 1 Replies
View Related
Aug 28, 2010
How Titanium works with android? And it is easy to work with titanium for developing android applications?
View 2 Replies
View Related
Sep 20, 2010
I wonder whether there is any way to develop native apps (HTML-based apps is another story) that would run both on Android and iPhone? I know that there exist applications available for both OSs, so I wonder how are they ported/developed for both targets?
View 5 Replies
View Related
Apr 27, 2009
How to develop applications for Android. I downloaded the Android SDK but I don't see where to begin.
View 4 Replies
View Related
Apr 20, 2009
I try to use facebook-java-api to wrote my android application . but I got some problems . when i import all the libs in facebook-java-api,My eclipse Could not find my apk.
View 5 Replies
View Related
Jul 9, 2010
I am a new Java programmer. I want to learn how to develop Android applications. If someone could name the best IDE, books and websites.
View 7 Replies
View Related
Apr 17, 2010
First of all, I just want to say I am a software developer, but I am not an Android developer. However I usually walk around and think on stuff. AndI've been recently thinking all the news concerning how fragmented Android is getting, with different Android versions and tweaks by different phone manufacturers, and then for developers you have different size formats. An example would be that HTC Tattoo might not be able to run everything that another phone might run, due to different screen formats, etc. And now the Android tablets are coming with different Android versions and different screen sizes, all from 5" to 11". Will this make developing Android applications harder? Apple has it safe here since they manufacturer all devices that run the iPhone OS: the pods, phones and now the pad so they can easily control and make sure not to loose any customers by introducing a new device. When Apple introduced iPad they had to make sure that all the old iPhone applications would work on the iPad. They solved that neatly by saying that iPhone applications will simply be stretched out to the double size and it would fit on the iPad. Unfortunately Android does not have the same luxury to do this. As I said, I am not an Android developer. Just a curious software developer For you guys who work actively in the Android community, does Google have a solution for this? Will you be able to run phone applications on the tablets? Is there a bridge between the devices? Are there any standardizations or will Android development become even more fragmented? you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-devel
View 2 Replies
View Related
Jun 2, 2010
I am trying to learn how to do stuff in Android, and I'm not sure of the best way to build the interface.I've been working on porting an iPhone app, which uses navigation controllers and table views for looking at the different sections: basically, someone touches a cell in the table, which drills down to another table. when they touch a cell on that table it drills down to a webview that displays the information.I want to do something similar for the android app, but I don't know how, or if there is a better way native to Android. I've figured out how to use the webview to my purposes, but moving forward and backward in the table tree is unclear.
View 3 Replies
View Related
Nov 3, 2009
What is the best way to use the MediaPlayer when needed multiple times?
Reuse the instantiated MediaPlayer throughout the session? Or constantly stop() release() and instantiate a new MediaPlayer() ?
If I reuse I'm afraid the player could be in a bad state? What about performance wise? what's better? reuse or renew?
This is for using as a music player so one audio be present at one given time...
View 4 Replies
View Related
Jun 26, 2009
My company is in the process of evaluating if we can add support for Android to our product. I am currently working on porting our existing J2ME library to the Android framework and I have a question regarding our UI component. Right now, we have a custom menu that we allow our developers to bring up on the device. On J2ME, we simply have a single call that the developer makes to enter into the menu and then we handle the rest. On Android, it seems the best way to handle this is an Activity. But I have a few questions regarding this approach including is the really the best way to do something like this? Second, if it is, if there are multiple applications on the device that are using our library, are there going to be conflicts with them all having the same Activity embedded in them? Is it possible to create an Actvity at runtime and use it directly? Would there be any side effects of going about it this way?
View 2 Replies
View Related
Aug 30, 2010
I have to create a number of tables for caching some amount of textual data, obtained by reading XMLs. These tables need to be created only once - on the initial run of the application. The data in the tables should be cleared after fixed time period. There should be a class exposed to other classes that would allow CRUD operations on this database. Googling found me some links to tutorials for creating databases and Data Access logic.
I have some questions, please help:
How many DataBaseHelper(DBAdapter) classes should I have, I am guessing only one? Is it okay to have all the SQL DDL and DML statements, DB name, Table Names as static strings of this class?
How do I ensure that the tables are created only once?
Is it possible to clear the DataBase after a fixed time interval?
Are there any best practices to be followed when designing the database?
The data in the database is to be displayed in Lists. I have data in ArrayLists(created when parsing XML) as well as Database(after these lists are persisted). What adapter should I use to back the list up? Should I use ListAdapter or CursorAdapter?
View 2 Replies
View Related
Oct 23, 2010
Understanding how to declare activities in the manifest file, how to set the appropriate flags when starting them through intents, is quite challenging in all but the default cases. The combination of all these settings and flags is daunting. I've been developing for Android for over a year now, have read the application fundamentals and the reference guide for 'Intent' quite a few times and still I don't have a good grasp of which manifest settings or intent-flags should be used for starting activities in many situations (workflows). Is there some source/document that can explain certain work-flows (ways of navigation through activities and tasks), that shows examples of how to configure and start activities?
View 4 Replies
View Related
Sep 10, 2010
can you advice me a book or something else containing good practices about how to build/structure a web application in a way that will be easy to extend it with an Android/iPhone version later.I am currently trying to get into Django so it will be nice if the practices are related to it.
View 1 Replies
View Related
May 8, 2010
I have an application with several tables, each being updated by AsyncTask fired by different Activities and used by UI with SimpleCursorAdapter. Though i am not developping a game, I would like to avoid to interrupt the user as mush as possible. Has SQLite is not multiaccess proof, what is the best way of handling such situation?
- I consider adding lock from each DB open and to each close sequence but this seems quite subject to bugs - The solution i am using now is that each DB access (read/write) is done in UI thread (when AsyncTask completes, DB write is done typically in onPostExecute), but that means user is blocked for several seconds during the DB write.
Is there any better solution for that? Should i use a ContentProvider? when i read "Content providers store and retrieve data and make it accessible to all applications", this does not seems to be what i need. Any idea?
View 4 Replies
View Related
Apr 22, 2010
What are the best practices people have used to integrate help/tips in their application? One way I can think of is having html snippets in resources or assets - perhaps as html files - maybe as formatted strings. However, I think it would break down once an html file linked to another html file or an image or icon. I'm sure some of you have apps that are so wonderfully intuitive that they don't need any help. And I admire that. But I'm not making that assumption for my app.
View 6 Replies
View Related
Nov 12, 2009
My Android app is reading and writing to a local SQLite DB from a few different Activities and a Service. Pretty standard. But I'm not happy with the way I've got all the DB details stored as constants that I then use anywhere I access the DB. I've been advised to wrap the DB in a ContentProvider. Sounds good to me. While I'm refactoring my code, I figured I'd ask: What are your best practices for local DB data storage in Android?
Where and how do you store "CREATE TABLE" statements, column names, other SQL? Would you mind sharing a list of the classes you instantiate and what goes into each (ContentProvider, DatabaseProvider, DatabaseHelper...)? How do you coordinate the structure of your local Android DB with a server-side DB available through a REST interface? I realize I'm getting at the perennial "where's the Android object-relation-mapping framework?" question. For now, I'm mainly curious to hear how you structure your Android apps with what's available in the standard SDK.
View 4 Replies
View Related
May 20, 2009
I've published an Android applications on the Android market and now have an update to do. I want to know if any of you have already done that, and what experience can you share about it:
- How to manage version conflicts?
- What to do with databases?
- Can you make appear a message with "what's new" if it's an update, but nothing it's a new installation?
- Should you backup old data before updating, and how?
- Did you run into any trouble and how did you solve it?
- Can update be partial (like, just a patch)?
View 1 Replies
View Related
Jul 25, 2010
I am a newbie to Android and the Eclipse development environment and would like some advice on best practices for debugging my apps when they throw a Force Close.I have researched ADB, however, I can not get this to interact with my phone even though I have explicitly turned debug mode to true on my test handset.Obviously Android comes with a LOG method which I have seen utilized in many example apps, can someone please explain how to review these logs quickly and how to setup logging appropriately to determine the cause of a Force Close (always occurs when I push the Home button).Any advice on debugging effectively in Eclipse would be much appreciated!
View 2 Replies
View Related
Aug 12, 2010
I have a mobile app, which is pretty data driven, though only through text and images. In the current version each click or touch requires pulling new data from the server (appache/php). With network delay this easily takes 1-2 seconds for the first content to appear, which is far too long. I have heard about and considered the following options, but are not sure if some of them might be counter productive, or if I have left something important out?
Download all data from the start, in a big bunch with a loading screen? Run a prefetching thread, predicting and downloading data the user might want, in the background? Keep the connection open to the server at all time? Load different parts of the data in different connections in parallel? (Similar to facebook) Use heavy data compression? A comprehensive article on the matter would also be a good answer.
View 1 Replies
View Related
Oct 20, 2010
I am working with a ListView, custom adapter and a large number of items. I read in a book for Android that is was more efficient to use what it called the holder pattern. That is to create a wrapper class for each view in the list view that cached the objects in the view so as to avoid calls to findViewById because those are supposed to be expensive. My question is what is better? To have 50,000 objects GC'd every time the user scrolls or to make the 4 or five calls to findViewById per view? Below is my implementation of what the book suggested.
@Override public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView; if (view == null) {
final LayoutInflater inflater = (LayoutInflater)
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.survey_item, null);
view.setTag(new SurveyItemWrapper(view));
} bindView((SurveyItemWrapper) view.getTag(), position);
return view; } private void bindView(SurveyItemWrapper surveyItemWrapper, int position)
{ final SurveyedItem surveyedItem = surveyedItems.get(position);
surveyItemWrapper.getDescription().setText(surveyedItem.getItemName());
surveyItemWrapper.getCube().setText(String.format("%9.2f", surveyedItem.getCube()));
surveyItemWrapper.getShipping().setText(String.format("%d", surveyedItem.getShipping()));
surveyItemWrapper.getNotShipping().setText(String.format("%d", surveyedItem.getNotShipping()));
} private class SurveyItemWrapper { private TextView description;
private TextView cube; private TextView shipping;
private TextView notShipping; private View view;
public SurveyItemWrapper(View view) { this.view = view;
} public TextView getDescription() {
if (description == null) { description = (TextView) view.findViewById(R.id.SurveyItemDescription); } return description;
} public TextView getCube() { if (cube == null) {
cube = (TextView) view.findViewById(R.id.SurveyItemCube);
} return cube; } public TextView getShipping() {
if (shipping == null) { shipping = (TextView) view.findViewById(R.id.SurveyItemShipping);
} return shipping;} public TextView getNotShipping() {
if (notShipping == null) { notShipping = (TextView) view.findViewById(R.id.SurveyItemNotShipping); } return notShipping; } }
View 2 Replies
View Related
Aug 26, 2010
I have an activity with multiple list views that are continuously receiving new values form a socket thread, another thread parses the data and updates the array adapters, then the ui thread calls notifyDataSetChanged() to cause the list to refresh.
My issue is that im refreshing all the list a couple of time a second, this causes the UI to be very laggy when some animations need to happen.
I was wondering what the best way is to update multiple lists with multiple value changes every second?
View 3 Replies
View Related
May 4, 2010
Are there any viable approaches for creating multiple .APKs out of a single codebase? The apps may share the same code, but they could have different manifest files, different resources, or different external libraries (for example in an app with both free and paid versions, the free version could have a library for display ads). Ideally, this would be a single Eclipse project, with a way to specify which app to build/debug, and possibly a command line way to batch build everything.
View 16 Replies
View Related
Aug 27, 2010
My application needs to perform some activities in background (like interacting with the network and check the location and some other stuff), having or not the main activity visible. Which is the best way to achieve this? Should I write a service for each kind of job? Or just one service that performs everything? I am aware that I will need to launch threads / asynctasks in any case because the service runs on the same thread of the UI, but maybe having several services is a more clear and readable structure.
View 7 Replies
View Related