日拱一卒(四)
1936 ワード
Activityベストプラクティス:
(1)現在のActivityを知る:
これにより、現在実行されているActivityをログで判断できます.
(2)プログラムを随時終了する
アクティブマネージャとしてActivity Collectorクラスを新規作成します.コードは次のとおりです.
BaseActivityのonCreate()メソッドでActivity CollectorのaddActivity()メソッドを呼び出し、現在作成中のアクティビティをアクティビティマネージャに追加することを示します.その後、BaseActivityでonDestroy()メソッドを書き換え、Activity CollectorのremoveActivity()メソッドを呼び出し、すぐに破棄するアクティビティをアクティブマネージャから削除することを示します.
これからは、プログラムをどこで終了するかにかかわらず、Activity Collectorを呼び出すだけです.finishAll()メソッドでいいです.
(3)起動活動の最適化
SecondActivityは、それにジャンプするActivityパッケージにジャンプメソッドをカプセル化します.
このように書くと、起動アクティビティのコードも簡略化され、次のように1行のコードでSecondActivityを起動できます.
(1)現在のActivityを知る:
public class BaseActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("BaseActivity", getClass().getSimpleName());
}
}
これにより、現在実行されているActivityをログで判断できます.
(2)プログラムを随時終了する
アクティブマネージャとしてActivity Collectorクラスを新規作成します.コードは次のとおりです.
public class ActivityCollector {
public static List<Activity> activities = new ArrayList<Activity>();
public static void addActivity(Activity activity) {
activities.add(activity);
}
public static void removeActivity(Activity activity) {
activities.remove(activity);
}
public static void finishAll() {
for (Activity activity : activities) {
if (!activity.isFinishing()) {
activity.finish();
}
}
}
}
BaseActivityのonCreate()メソッドでActivity CollectorのaddActivity()メソッドを呼び出し、現在作成中のアクティビティをアクティビティマネージャに追加することを示します.その後、BaseActivityでonDestroy()メソッドを書き換え、Activity CollectorのremoveActivity()メソッドを呼び出し、すぐに破棄するアクティビティをアクティブマネージャから削除することを示します.
これからは、プログラムをどこで終了するかにかかわらず、Activity Collectorを呼び出すだけです.finishAll()メソッドでいいです.
(3)起動活動の最適化
SecondActivityは、それにジャンプするActivityパッケージにジャンプメソッドをカプセル化します.
public class SecondActivity extends BaseActivity {
public static void actionStart(Context context, String data1, String data2) {
Intent intent = new Intent(context, SecondActivity.class);
intent.putExtra("param1", data1);
intent.putExtra("param2", data2);
context.startActivity(intent);
}
……
}
このように書くと、起動アクティビティのコードも簡略化され、次のように1行のコードでSecondActivityを起動できます.
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
SecondActivity.actionStart(FirstActivity.this, "data1", "data2");
}
});