Friday, November 25, 2016

android abstract class example

public abstract class BaseActivity extends Activity {

    public static final String TAG = "Test";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(myView());
        activityCreated();
    }

    public void printMessage(String message){
        System.out.print(message);
    }


    public abstract int myView();
    public abstract void activityCreated();

}
public class TestActivity extends BaseActivity {

@Override
public int myView() {
     return R.layout.activity_main;
}

@Override
public void printMessage(String message) {
    super.printMessage(message);
}

@Override
public void activityCreated() {
    Log.i("TestActivity", "Created");

    printMessage("Hello Hiren !!!");
  }
}

Thursday, November 24, 2016

Thread Synchronization in Java and Android


public class Main {

public static void main(String[] args) {

SynDemo d = new SynDemo();
Thread1 th1 = new Thread1(d);
Thread2 th2 = new Thread2(d);

th1.start();
th2.start();

}

}

class SynDemo {

// synchronized

synchronized void printNumber(String string) {
for (int i = 0; i < 2000; i++) {
// Log.i("" + string, String.valueOf(i));
System.out.println(string + " = " + String.valueOf(i));
}
}
}

class Thread1 extends Thread {
private SynDemo d;

public Thread1(SynDemo sDemo) {
d = sDemo;
}

@Override
public void run() {
super.run();
d.printNumber("Thread1");
}
}

class Thread2 extends Thread {

private SynDemo d;

public Thread2(SynDemo sDemo) {
d = sDemo;
}

@Override
public void run() {
super.run();
d.printNumber("T2");
}
}

output:

without synchronized
Thread1 = 0
Thread1 = 1
Thread1 = 2

T2 = 0
T2 = 1
T2 = 2
T2 = 3
T2 = 4
T2 = 5
T2 = 6

Thread1 = 3
Thread1 = 4
Thread1 = 5

with synchronized
Thread1 = 0
Thread1 = 1
Thread1 = 2
Thread1 = 3
Thread1 = 4
Thread1 = 5

T2 = 0
T2 = 1
T2 = 2
T2 = 3
T2 = 4
T2 = 5




Wednesday, November 23, 2016

android custom listener or callback or interface

download: http://www.mediafire.com/file/pmk0jckln50sm78/MyListner1.zip


package collapsingtoolbarlikewhatsapp.startingandroid.com.mylistner;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements MyListener {

    TextView tv_msg;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tv_msg =(TextView) findViewById(R.id.tv_msg);

        MyButton mMyButton = new MyButton(this);

    }

    @Override
    public void callback(MyButton view, String result) {

        System.out.println(" MainActivity callback");

        tv_msg.setText("MainActivity callback" + " result="+result);

    }
}


-----------------------------------------------------------------------------------------


package collapsingtoolbarlikewhatsapp.startingandroid.com.mylistner;

public class MyButton {
    MyListener ml;

    // constructor
    MyButton(MyListener ml) {
        this.ml = ml;

        myLogicToIntimateOthere();
    }

    public void myLogicToIntimateOthere() {
        ml.callback(this, "success");
    }
}


-----------------------------------------------------------------------------------------

package collapsingtoolbarlikewhatsapp.startingandroid.com.mylistner;
import android.view.View;

public interface MyListener {
    // you can define any parameter as per your requirement
    public void callback(MyButton view, String result);
}