BaseActivity基类封装
2017-07-04 09:59
148 查看
** * Activity基类 */ public abstract class BaseActivity extends AppCompatActivity implements View.OnClickListener{ /** * 设置ContentView * @return R.layout.xxx */ protected abstract int getLayoutId(); /** * 初始化View */ protected abstract void initView(); /** * add Listener */ protected abstract void setListener(); /** * 初始化数据 */ //protected abstract void initData(); /** * view点击 * @param v */ public abstract void widgetClick(View v); // private BroadcastReceiver bReceiver; // private IntentFilter iFilter; private long exitTime = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(getLayoutId()); //添加Activity到堆栈 MyApp.getInstance().addActivity(this); //动态注册广播 // iFilter = new IntentFilter(); // iFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); // bReceiver = new myBroadCast(); // registerReceiver(bReceiver, iFilter); initView(); setListener(); //initData(); } @Override public void onClick(View v) { if (fastClick()) widgetClick(v); } private long lastClick = 0; private boolean fastClick() { if (System.currentTimeMillis() - lastClick <= 1000) { return false; } lastClick = System.currentTimeMillis(); return true; } /** *findViewById() * @param id * @param <T> * @return */ protected <T extends View> T $findViewById(int id) { return (T) findViewById(id); } /** * Toast */ protected void $toast(CharSequence msg) { Toast.makeText(this, msg, Toast.LENGTH_SHORT).show(); } protected boolean isDebug = true; /** * Log * @param msg */ protected void $Log(String msg) { if (isDebug) { Log.e(this.getClass().getName(), msg); } } /** * 网络是否可用 * * @param context * @return */ protected boolean isNetworkAvailable(Context context) { ConnectivityManager mgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo[] info = mgr.getAllNetworkInfo(); if (info != null) { for (int i = 0; i < info.length; i++) { if (info[i].getState() == NetworkInfo.State.CONNECTED) { return true; } } } return false; } /** * 广播 */ // public static class myBroadCast extends BroadcastReceiver { // @Override // public void onReceive(Context arg0, Intent arg1) { // ConnectivityManager connectivityManager = (ConnectivityManager) arg0.getSystemService(arg0.CONNECTIVITY_SERVICE); // NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); // if (networkInfo != null && networkInfo.isAvailable()) { // Toast.makeText(arg0, "网络已连接", Toast.LENGTH_SHORT).show(); // } else { // Toast.makeText(arg0, "网络未连接", Toast.LENGTH_SHORT).show(); // } // } // } /** * 连按返回键退出APP * * @param keyCode * @param event * @return */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) { if ((System.currentTimeMillis() - exitTime) > 2000) //System.currentTimeMillis()无论何时调用,肯定大于2000 { Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show(); exitTime = System.currentTimeMillis(); } else { // Intent intent = new Intent(Intent.ACTION_MAIN); // intent.addCategory(Intent.CATEGORY_HOME); // startActivity(intent); // System.exit(0); MyApp.getInstance().AppExit(); } return true; } return super.onKeyDown(keyCode, event); } @Override protected void onDestroy() { super.onDestroy(); //结束Activity&从栈中移除该Activity MyApp.getInstance().finishActivity(this); //unregisterReceiver(bReceiver);//注销广播 } }
相关文章推荐
- Android常见基类封装
- entity framework 封装基类
- 自己封装的一个 TCP 套接字基类
- Http请求封装基类HttpHelper.cs
- c#基类 常用数据验证的封装,数字,字符,邮箱的验证
- mvp基类+retrofit封装 请求数据
- ConnectivityManager类网络状态判断设置+BaseActivity和BaseFragment的封装使用+网络状态工具类+网络请求工具类
- BaseFragment基类封装
- 从BaseActivity与BaseFragment的封装谈起
- 从BaseActivity与BaseFragment的封装谈起
- 封装一个BaseActivity并实现沉浸式状态栏
- adapter基类的封装
- BaseActivity中标题栏TitleBar的封装
- c#基类 常用数据验证的封装,数字,字符,邮箱的验证
- 封装Springjdbc的通用基类(copy)
- Android 基类BaseActivity的封装
- BaseActivity和BaseFragment 的封装
- 工厂模式:封装对象的创建(一、在基类中定义一个静态成员函数)
- Android 基于 MVP 框架的下拉刷新、上拉加载页面,View和Presenter层基类封装
- wp7 Page基类的使用,以及传入任意类型的参数封装