当前位置: 首页 > news >正文

网站服务器在哪公共体育课程网站建设

网站服务器在哪,公共体育课程网站建设,微信注册小程序收费吗,传到网站根目录安卓开发_广播机制_广播的最佳实践:实现强制下线功能 ActivityCollector类用于管理所有的ActivityBaseActivity类作为所有Activity的父类创建一个LoginActivity来作为登录界面布局LoginActivity 在MainActivity中加入强制下线功能布局MainActivity在BaseActivity中注…

安卓开发_广播机制_广播的最佳实践:实现强制下线功能

  • ActivityCollector类用于管理所有的Activity
  • BaseActivity类作为所有Activity的父类
  • 创建一个LoginActivity来作为登录界面
    • 布局
    • LoginActivity
  • 在MainActivity中加入强制下线功能
    • 布局
    • MainActivity
    • 在BaseActivity中注册广播接收
    • 将LoginActivity注册为主Activity
  • 参考

ActivityCollector类用于管理所有的Activity

object ActivityCollector {private val activities = ArrayList<Activity>()fun addActivity(activity: Activity) {activities.add(activity)}fun removeActivity(activity: Activity) {activities.remove(activity)}fun finishAll() {for (activity in activities) {if (!activity.isFinishing) {activity.finish()}}activities.clear()}
}

BaseActivity类作为所有Activity的父类

open class BaseActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)ActivityCollector.addActivity(this)}override fun onDestroy() {super.onDestroy()ActivityCollector.removeActivity(this)}
}

创建一个LoginActivity来作为登录界面

布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><LinearLayoutandroid:orientation="horizontal"android:layout_width="match_parent"android:layout_height="60dp"><TextViewandroid:layout_width="90dp"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:textSize="18sp"android:text="Account:" /><EditTextandroid:id="@+id/accountEdit"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:layout_gravity="center_vertical" /></LinearLayout><LinearLayoutandroid:orientation="horizontal"android:layout_width="match_parent"android:layout_height="60dp"><TextViewandroid:layout_width="90dp"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:textSize="18sp"android:text="Password:" /><EditTextandroid:id="@+id/passwordEdit"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:layout_gravity="center_vertical"android:inputType="textPassword" /></LinearLayout><Buttonandroid:id="@+id/login"android:layout_width="200dp"android:layout_height="60dp"android:layout_gravity="center_horizontal"android:text="Login" />
</LinearLayout>

LoginActivity

class LoginActivity : AppCompatActivity() {private lateinit var binding: ActivityLoginBindingoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)binding = ActivityLoginBinding.inflate(layoutInflater)setContentView(binding.root)binding.login.setOnClickListener {val account = binding.accountEdit.text.toString()val password = binding.passwordEdit.text.toString()if(account == "admin" && password == "123456"){val intent = Intent(this, MainActivity::class.java)startActivity(intent)finish()}else{Toast.makeText(this, "account or password is invaild", Toast.LENGTH_SHORT).show()}}}
}

在MainActivity中加入强制下线功能

布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent" ><Buttonandroid:id="@+id/forceOffline"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Send force offline broadcast" />
</LinearLayout> 

MainActivity

class MainActivity : BaseActivity() {private lateinit var binding: ActivityMainBindingoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)binding = ActivityMainBinding.inflate(layoutInflater)setContentView(binding.root)binding.forceOffline.setOnClickListener {val intent = Intent("com.example.broadcastbestpractice.FORCE_OFFLINE")sendBroadcast(intent)}}
}

在BaseActivity中注册广播接收

open class BaseActivity : AppCompatActivity() {private lateinit var receiver: ForceOfflineReceiveroverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)ActivityCollector.addActivity(this)}override fun onResume() {super.onResume()val intentFilter = IntentFilter()intentFilter.addAction("com.example.broadcastbestpractice.FORCE_OFFLINE")receiver = ForceOfflineReceiver()registerReceiver(receiver, intentFilter)}override fun onPause() {super.onPause()unregisterReceiver(receiver)}override fun onDestroy() {super.onDestroy()ActivityCollector.removeActivity(this)}inner class ForceOfflineReceiver: BroadcastReceiver(){override fun onReceive(context: Context, intent: Intent) {AlertDialog.Builder(context).apply{setTitle("Warining")setMessage("You are forced to be offline. Please try to login again.")setCancelable(false)setPositiveButton("OK") { _, _ ->ActivityCollector.finishAll()val i = Intent(context, LoginActivity::class.java)context.startActivity(i)}show()}}}
}

将LoginActivity注册为主Activity

参考

郭霖. 《第一行代码 Android 第3版》

http://www.yayakq.cn/news/616699/

相关文章:

  • 网站标题优化怎么做网站设置评价
  • 如何做网站后台管理员广告宣传图片制作app
  • 网站logo在线设计建设厅焊工证什么样子
  • 二级域名做很多网站建设一个大型电影网站
  • 珠海网站制作推荐济南恢复娱乐场所
  • cms网站开发流程克隆网站首页做单页站几个文件夹
  • 企业网站 三网系统郑州网站推广方式
  • 牛皮纸 东莞网站建设网络营销案例分析论文
  • 技智网站建设小编淮北哪有做网站的
  • 进口国际博览会上海嘉兴优化网站费用
  • 保定网站设计中国建设银行 官方网站
  • 10类地方网站 总有适合你做的阿里云备案要关网站吗
  • 拼多多网站开发微网站开发 培训
  • 在县城怎么做网站公司app登录界面设计图片
  • 电商网站的推广方式网站集约化建设讲话
  • flash型网站网址78模板网免费模板
  • 上街区做网站北京科技公司名称
  • 建设一个视频网站己18做网站的公司都很小吗
  • 温州外贸网站制作免费网页下载
  • 淘宝联盟个人网站怎么做公司企业做网站违法吗
  • 网站设计需求说明书学做川菜下什么网站
  • 网站设计制作多少钱服装品牌策划
  • 博白建设局网站建设网站找哪里
  • 自己建设网站需要具备哪些条件资源下载类网站如何做外链
  • 做电影下载网站成本简创网站建设费用
  • 哪个汽车网站好免费网站设计什么价格
  • 网站空间要多少钱松松软文平台
  • 重庆九龙坡营销型网站建设公司哪家专业网站遭到攻击 运维怎么做
  • 南京百度网站快速优化网站建设流程知乎
  • 广州联雅做的网站怎么样小型网站网站建设需要