Monthly Archives: February 2012

Simple Animation Demo in Android, Using Multithreading

Hi All,
This is a sample application demonstrating how to Animate using AysncTask.
Ball class will draw itself by moving in a particular direction.
Ball class will hold it””””s radius, x y co-ordinates , color and the direction in which it should move. The move method of class Ball will manage the x,y co-ordinates depending on it””””s direction. The following is the class Ball .
———————————————————————————————————————–
package in.bitcode.animationdemo;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
public class Ball {
    int x, y, r;
    Paint paint;
    String direction;
    public Ball( int x, int y, int r, int color, String direction ) {
        this.x = x; this.y = y; this.r = r;
        paint = new Paint();
        paint.setColor(color);
        this.direction = direction;
    }
    public void move(Canvas canvas ) {
        if( direction.equals(“up”) ) {
            y–;
        }
        if( direction.equals(“right”) ) {
            x++;
        }
        if( direction.equals(“down”) ) {
            y++;
        }
        if( direction.equals(“left”) ) {
            x–;
        }
        draw(canvas);
    }
    public void draw( Canvas canvas ) {
        canvas.drawCircle(x, y, r, paint);
    }
}

———————————————————————————————————————–

MyImageView class
MyImageview class is extending the class ImageView.
It will contain four Ball objects, initialized to move up, right, down and left. Their initial position will be center of the screen.  It””””s onDraw method is overridden which will call the move method on each ball by passing it the Canvas object.
We will be having a Thread which will invalidate this MyImageView after some interval so that the onDraw of MyImageView is called which will in turn call the move method on each ball contained inside it.
Following is the class MyImageView:

———————————————————————————————————————–
package in.bitcode.animationdemo;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.widget.ImageView;

public class MyImageView extends ImageView {

Ball bup, bright, bdown, bleft;

public MyImageView(Context context, int width, int height ) {
super(context);
bup = new Ball( width/2, height/2, 20, Color.RED,”up”);
bright = new Ball( width/2, height/2, 20, Color.GREEN,”right”);
bdown = new Ball( width/2, height/2, 20, Color.BLUE,”down”);
bleft= new Ball( width/2, height/2, 20, Color.YELLOW,”left”);
}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
bup.move( canvas );
bright.move( canvas );
bdown.move( canvas );
bleft.move( canvas );
}

}
——————————————————

The Home class:

Home class extends the Activity class. Home activity class will create an object of class MyImageView and set it as content view. It will have and inner class MyThread which will be extending the class AsyncTask. MyThread will invalidate the MyImageView after certain interval.

Following is the Home class, it is containing an inner class Mythread:

————————————————
package in.bitcode.animationdemo;import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;public class Home extends Activity {

MyImageView view;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

view = new MyImageView(this, getWindowManager().getDefaultDisplay().getWidth(), getWindowManager().getDefaultDisplay().getHeight() );
setContentView(view);

new MyBallThread().execute(null);

}

class MyBallThread extends AsyncTask<Object, Object, Object> {

@Override
protected Object doInBackground(Object… params) {
for( int i = 0; i < 200; i++ ) {
publishProgress(null);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return null;
}

@Override
protected void onProgressUpdate(Object… values) {
// TODO Auto-generated method stub
super.onProgressUpdate(values);
view.invalidate();
}

}

}

————————————————

–  Android @ BitCode Technologies Pvt. Ltd. – No. 1 Mobile  Training Company in Pune

“Pioneers in Mobile Computing Training”

Find more about us at http://www.bitcode.in

iPhone Interview questions with Answers (iPhone @ BitCode )

Hello All , find below some iPhone interview questions . I hope this will help you to face the technical interview . I will be modifying this post with some more questions and answers in a couple of days , so keep checking this post for more .

1. What is @interface?
- It’s a keyword used to declare the Class.
2. What is @implementation?
- It’s a keyword used to define the Class.
3. Garbage collector in iPhone?
- iOS 5.0 has got the ARC ( Automated reference counting ).  Objective C does not have a garbage collector rather it uses the reference counting algorithm to manage the memory. This was the developers task until Apple launched iOS 5.0. Again if you are targeting iOS 4.0 or earlier , ARC is no more a choice for you .
4. What is delegate?
- Delegate is an object that handles the events happening on an object. To do that delegate has to follow a protocol specifying the task it is going to handle .
5. What is @synthesize?
- We use @synthesize to generate getters and setters automatically from compiler.  We declare properties and then generate getter and setter method by using @synthesize.
6. What are the features of iOS 5.0 ?
- https://developer.apple.com/technologies/ios5/
7. What is nonatomic ?
- nonatomic and atomic are related to multithreading environment .
 – If a property has an attribute as “nonatomic” that means multiple threads can modify that property concurrently.
- If the attribute is “atomic”, the threads would be given access atomically.
-  So “Atomic” is thread safe while “nonatomic” is thread unsafe.
- Atomic drastically hampers the performance so until and unless not needed you should never go for atomic attribute. ‘nonatomic ’ will do in most of the cases.
8. What are the delegate methods of MKMapView ?
- Check the MKMapViewDelegate in the Documentation. If you don’t have Xcode with you then search on Google.
9. What are the important delegate methods of NSXML parser?
-DidStartElement
-FoundCharecters
-DidEndElement
-FoundError
10. What is @dynamic and any place where it is used ?
- It tells compiler that getter and setter are not implemented by the class but by some other class .
- May be super class or child class .
Example – Core Data
-       The Managed object classes have properties defined by using @dynamic.
11. What is @property?
- It is a keyword used to declare a property.
12. What is data source?
- The datasource is an object that implements the required datasource protocol that is needed to create a complex control.
Ex UITableView is a view that needs a datasource object to which will help building the table. Often it’s the controller that is displaying the table view. The protocol that dataSource object ( mostly controller it self) has to implement is “UITableViewDataSource” .
13. What is model view controller?
- MVC is a Design pattern .
Model stands for the database  object which will manage all the database transaction .
- View stands for the UI i.e. the UI visible to the user. User will be interacting with the view.
- Controller is an object who handles the view events and also render the database changes to the UI. In short , it bridges the interaction between Modal and View.
14. what is @ protocol?
- @protocol is a keyword used to define a protocol. A protocol is a set of method declarations defining specific purpose. It only lists out the methods prototype , the actual implantation would be provided by the class that implements /  follows the protocol.
15. what is id?
- id is a generic reference type. The variable declared using id data-type can hold any object. Most of the methods that returns an object has ‘id’ as return type. Ex – init.
16. Explain memory management?
- Most of the object oriented languages have the Garbage Collector .  All the objects are allocated on the heap memory. The Garbage Collector is a thread that runs periodically to check all the objects, which are no more being referenced from the program. Garbage collector then de-allocates all these unreferenced objects on the Heap. In this environment programmer does not need to worry about de-allocating the objects explicitly.
In Objective – C we don’t have garbage collector. ( Note: Its available from iOS 5.0 only). So in this environment we have to explicitly take care of allocation and deallocation of all the objects in our program.  And to manage this Objective C uses ‘reference counting’ algorithm as the memory management algorithm.
Reference Counting: In this algorithm every object keeps track of it owners ( I,e reference variables from the program ) . No of owners is represented by the property retainCount declared in NSObject. If this retainCount goes to ‘0’ the object gets deallocated automatically.  We never call dealloc method on any object explicitly.
17. what is retain and release?
- retain and release are two method defined in NSObject . – -
- These methods are related to Memory Mangement .
- retain method when called increases the retainCount by 1.
- release method when called decreases the retainCount by 1
18. what is dealloc?
- dealloc method is called on an object to actually deallocate the memory for that object. ( We should never call dealloc directly )
- In reference counting environment when retainCount of an object reaches to ‘0’, the dealloc method is called on that object automatically to delete the memory space of the object .
- If the object is having some reference type variable holding other objects, then we should call release method on every variable in dealloc.
- If you override then [super dealloc] should be the last line in this method.
19. What is Autorelease pool?
-  Autorelease pool is like a container that holds the autoreleased objects .
- This pool is drained with every run-loop of the Application
- When the pool gets drained, autorelease pool sends a release message to all the objects it was holding.
20. What is Foundation Framework? Can you explain some classes from that?
- Foundation is one of the important frameworks in COCOA Touch.
- It contains the classes like  NSArray , NSString , NSObject etc .
21. What is the difference between NSArray and NSMutableArray?
* NSArray
-        is a static array
-       Once created you can not modify the array
-       Ex you can not add or remove the object in NSArray.
* NSMutableArray
-       is a dynamic array
-       You can add or remove the object dynamically.
22. Write a delegate method of the table view?
 – (void)tableView:( UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath
23. What are the delegate methods of NSURLConection?
- didReceiveResponse:
- didReceiveData:
- didFinishLoadingData:
- didFailWithError:
24. What is cocoa ?
- COCOA is a collection of frameworks used to write Applications for MAC OS X.
25. Singleton classes
- A singleton class is such a class from which no more that one instance can be created. So there will always be single instance created throughout the program.
Ex UIApplication.