When I write my activities on android, I have to override a lot of “lifecycle” methods, such as onCreate, onActivityResult:
class MyAcitivity extends Activity {
@Override
public void onCreate(...) {}
@Override
public void onStart(...) {}
@Override
public void onActivityResult(...) {}
@Overide
public void onBackPressed(...) {}
}
I don’t like this, because I found my logical code are split to everywhere in my class. I do some operation in this method, but I have to handle the result in another method.
Is it the only way to design Activity like this? Is there any other solution can let me do the same without overriding methods from super classes?
Update
I do some operation in this method, but I have to handle the result in another method.
For example:
public void onCreate(...) {
startActivityForResult(new Intent(this, AnotherAcitity.class), INTENT_ANOTHER);
}
public void onActivityResult(...) {
if(requestCode == INTENT_ANOTHER) {
// do something
}
}
Update again
I know how to use these lifecycle methods, what I’m thinking is the “design”. Is there any different way to design android (in theory) without “overriding lifecycle methods” to write activities. Does ios and win8 on mobiles use the same design as android? If I develop an ios or win8 application, do I have to override all kinds of lifecycle methods as I do on android?
You only need to override the methods you’re using in your Activity. So if your activity simple displays a help page that has already been populated in the XML, you only have to override
onCreate()and callsetContentView().In general, if your overriden method is like:
That is to say, it contains nothing but a super call, you need not override it.
In the example you provided, you must override the appropriate lifecycle methods as the calling of these is beyond your control, unless you’re willing to develop a custom ROM for your device(s).
EDIT
The Android lifecycle methods are called by the system at specific predefined points in your app’s life.
You cannot design an Activity in a different way, as if you do Android has no idea which method does what. However, it knows exactly when to call which method in the Android lifecycle. By using your own methods instead of these, you have an app which Android cannot interact with.
Additionally, many lifecycle methods like
onCreate()etc. help setup the initial bits of your app (like getting it aContext).iOS and Windows Phone and BlackBerry have similar lifecycle methods, but they don’t always have an exact Android equivalent, as all are different platforms and handle their apps differently.