Android使用广播退出应用

应用开发时需要处理安全退出应用,之前研究过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

Android使用广播退出应用,,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。