当前位置: 首页 > 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.sczhlp.com/news/78111/

相关文章:

  • 平时常用的命令,忘记了回来查
  • 05-判断是文件还是文件夹
  • 06-批量push文件
  • Ubuntu启动提示recovering journal并进入紧急模式
  • 比较好的建站系统天元建设集团有限公司董事长张桂玉
  • 网站建设专题页网页设计与制作教程资源
  • 嘉兴制作企业网站南谯区住房和城乡建设局网站
  • 网站结构分析怎么写单位网站建设运维情况
  • 域名做网站名网站正在建设代码
  • 雪白丰腴做美妇网站门户网站建设公司案例
  • shell脚本求10个随机数中最大值与最小值
  • 网站空间申请开通网站应该设计成什么样
  • 昆明网站的优化wordpress主页修改
  • 网站建设的博客群晖 wordpress 单用户
  • 个人做网站外包价格如何算怎样做网站导购教程
  • 网站项目建设合同可以做推广的门户网站
  • 企业网站建设技巧怎么建立和设计网站
  • 如何做网站图片切换台州快速建站公司
  • 山西建设官方网站区块链开发与应用
  • 网站作品怎么做网站设计的知识技能
  • 南京网站建设报价南通网站建设top
  • asp.net网站搬迁到移动终端商丘三合一网站建设
  • 容桂网站建设哪家公司好微信小程序的代码
  • 网站的转盘游戏怎么做国外网站托管
  • 佛山低价网站建设免费php源码资源网
  • 手机网站服务器品牌建设不足的原因
  • 有什么网站可以做设计兼职的南京网页设计哪家好
  • 可以做卷子的网站网站头图设计
  • 策划方案免费网站最新军事新闻12小时
  • 做网站的挣钱么南宁网站建设地方