应用开发时需要处理安全退出应用,之前研究过Foursquare的代码,发现它用的是广播机制来处理退出应用。
public class BaseActivity extends Activity
{
private static final String TAG = BaseActivity.class.getSimpleName();
public static final String INTENT_ACTION_LOGGED_OUT = "INTENT_ACTION_LOGGED_OUT";
private BroadcastReceiver mLoggedOutReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
Log.d(TAG, "onReceive: " + intent);
finish();
}
};
@Override
protected void onCreate(Bundle arg0)
{
super.onCreate(arg0);
registerReceiver(mLoggedOutReceiver, new IntentFilter(
INTENT_ACTION_LOGGED_OUT));
}
@Override
protected void onPause()
{
super.onPause();
if (isFinishing())
{
unregisterReceiver(mLoggedOutReceiver);
}
}
}
让每个Activity继承BaseActivity, 当推出应用的时候,发送一条广播,应用就能安全的退出。
网上有另外一种退出方法:在Application中用List<Activity>记录打开的Activity的context,在退出的时候,遍历List<Activity>,依次fiinish activity,这种方法的问题是会一直持有改Activity的context, 使之不能及时释放资源,如果跳转的页面很多的话容易照成OOM