主界面按两次返回桌面,MainActivity会多生成一个任务栈,MainActivity使用singleTop或singleTask启动模式无效,想要实现的就是在MainActivity按两次物理返回按键,退回到手机桌面,下面是MainActivity类,和继承的BaseActivity,还有BaseApplication类
MainActivity:
public class MainActivity extends BaseActivity implements View.OnClickListener {
@Override
protected View initView(Bundle savedInstanceState) {
View view = View.inflate(this, R.layout.activity_main, null);
ButterKnife.bind(this, view);
frameLayout.addView(view);
mToolbar.setVisibility(View.GONE);
String uid = UserManager.getInstance().getUid();
Log.d(TAG, "initView: 1026= " + uid);
return view;
}
@Override
protected void initData() {
}
@Override
protected void initEvent() {
mShoot.setOnClickListener(this);
}
private void setLayout() {
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN && KeyEvent.KEYCODE_BACK == keyCode) {
long currentTime = System.currentTimeMillis();
if ((currentTime - touchTime) >= waitTime) {
ToastUtil.showMessage(getString(R.string.back_desk));//让Toast的显示时间和等待时间相同
touchTime = currentTime;
} else {
//TODO:需要两次才退出
BaseApplication.getApplication().exit();//退出应用,销毁所有Activity
finish();
}
return true;
}
return super.onKeyDown(keyCode, event);
}
}
BaseActivity:
public abstract class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
beforeOnCreate(savedInstanceState);
super.onCreate(savedInstanceState);
hideStatusBar(false); //隐藏顶部电量,时间等信息
BaseApplication.getApplication().addActivity(this);//记录当前应用的Activity,用于退出整个应用
getSupportActionBar().hide();//隐藏顶部ActionBar,继承AppCompatActivity需要使用getSupportActionBar,getActionBar方法在继承Activity使用
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
}
}
}
BaseApplication:
public class BaseApplication extends MultiDexApplication {
@Override
public void onCreate() {
super.onCreate();
sApp=this;
// UserManager.init(this);
application=this;
ToastUtil.init(this);
TXUGCBase.getInstance().setLicence(this, ugcLicenceUrl, ugcKey);
UserManager.init(this);
// Logger.addLogAdapter(new AndroidLogAdapter());
}
public static Context getContext() {
return sApp.getApplicationContext();
}
public static BaseApplication getApplication() {
return application;
}
public void addActivity(Activity activity) {
mList.add(activity);
}
public void exit() {
try {
for (Activity activity : mList) {
if (activity != null)
activity.finish();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
System.exit(0);
}
}
public void onLowMemory() {
super.onLowMemory();
System.gc();
}
}
试试这个,看是否能退出
MainActivity
里去掉onKeyDown
,然后在BaseActivity
里加onBackPressed()
.