zoukankan      html  css  js  c++  java
  • 4月8日学习日志

    今天学习了模拟踢用户下线。

    代码为:

    public class ActivityCollector {
        private 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();
                }
            }
        }
    }
    public class BaseActivity extends AppCompatActivity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            ActivityCollector.addActivity(this);
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            ActivityCollector.removeActivity(this);
        }
    }
    public class LoginActivity extends BaseActivity implements View.OnClickListener{
    
    
        private SharedPreferences pref;
        private SharedPreferences.Editor editor;
    
        private EditText edit_user;
        private EditText edit_pawd;
        private Button btn_login;
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_login);
            pref = PreferenceManager.getDefaultSharedPreferences(this);
    
            bindViews();
        }
    
        private void bindViews() {
            edit_user = (EditText) findViewById(R.id.edit_user);
            edit_pawd = (EditText) findViewById(R.id.edit_pawd);
            btn_login = (Button) findViewById(R.id.btn_login);
            btn_login.setOnClickListener(this);
        }
    
        @Override
        protected void onStart() {
            super.onStart();
            if(!pref.getString("user","").equals("")){
                edit_user.setText(pref.getString("user",""));
                edit_pawd.setText(pref.getString("pawd",""));
            }
        }
    
        @Override
        public void onClick(View v) {
            String user = edit_user.getText().toString();
            String pawd = edit_pawd.getText().toString();
            if(user.equals("123")&&pawd.equals("123")){
                editor = pref.edit();
                editor.putString("user", user);
                editor.putString("pawd", pawd);
                editor.commit();
                Intent intent = new Intent(LoginActivity.this, MainActivity.class);
                startActivity(intent);
                Toast.makeText(LoginActivity.this,"哟,竟然蒙对了~",Toast.LENGTH_SHORT).show();
                finish();
            }else{
                Toast.makeText(LoginActivity.this,"这么简单都输出,脑子呢?",Toast.LENGTH_SHORT).show();
            }
    
        }
    }
    public class MyBcReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(final Context context, Intent intent) {
            AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(context);
            dialogBuilder.setTitle("警告:");
            dialogBuilder.setMessage("您的账号在别处登录,请重新登陆~");
            dialogBuilder.setCancelable(false);
            dialogBuilder.setPositiveButton("确定",
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            ActivityCollector.finishAll();
                            Intent intent = new Intent(context, LoginActivity.class);
                            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                            context.startActivity(intent);
                        }
                    });
            AlertDialog alertDialog = dialogBuilder.create();
            alertDialog.getWindow().setType(
                    WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
            alertDialog.show();
        }
    }
    public class MainActivity extends BaseActivity {
    
        private MyBcReceiver localReceiver;
        private LocalBroadcastManager localBroadcastManager;
        private IntentFilter intentFilter;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            localBroadcastManager = LocalBroadcastManager.getInstance(this);
    
            //初始化广播接收者,设置过滤器
            localReceiver = new MyBcReceiver();
            intentFilter = new IntentFilter();
            intentFilter.addAction("com.jay.mybcreceiver.LOGIN_OTHER");
            localBroadcastManager.registerReceiver(localReceiver, intentFilter);
    
            Button btn_send = (Button) findViewById(R.id.btn_send);
            btn_send.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent("com.jay.mybcreceiver.LOGIN_OTHER");
                    localBroadcastManager.sendBroadcast(intent);
                }
            });
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            localBroadcastManager.unregisterReceiver(localReceiver);
        }
    }
  • 相关阅读:
    [转] Immutable 常用API简介
    [转] 组件库按需加载 借助babel-plugin-import实现
    [转] react-router4 + webpack Code Splitting
    [转] React Hot Loader 3 beta 升级指南
    [转] 如何写好.babelrc?Babel的presets和plugins配置解析
    [转] webpack热更新配置小结
    [转] 学会fetch的用法
    [转] webpack3.0踩坑:postcss-loader的使用
    [转] 详解webpack-dev-server的使用
    webpack 使用环境变量
  • 原文地址:https://www.cnblogs.com/20193925zxt/p/14909596.html
Copyright © 2011-2022 走看看