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

广安 网站建设优秀商业空间设计案例分析

广安 网站建设,优秀商业空间设计案例分析,网站建设管理员,dw建设网站如何加入音乐安卓开发_广播机制_广播的最佳实践:实现强制下线功能 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/773596/

相关文章:

  • it公司怎么在国外网站做宣传那些网站可以做h5
  • 专业做网站app的公司哪家好兴义做网站
  • 国外手机设计网站深圳产品推广网站建设方案
  • 怎么在网站上做充话费业务重庆建设施工安全管理网站
  • 做网站赚钱多吗外贸公司如何运营
  • 网站建设 广州网站源码在线查看
  • 北京顺义做网站怎么自己开一个网站
  • 网站怎样做平面设计图免费域名网址
  • 微网站一键导航台州市网站建设公司
  • 编程网站编程上海南京东路网站建设
  • 湖北智能建站系统价格wordpress代码压缩
  • 优化官方网站设计网页制作与网站建设在线作业
  • 佛山优化网站关键词深圳平面设计工作室
  • 内蒙古微网站建设云网站开发
  • 找公司做网站需要注意什么阿里云域名如何做网站
  • 购买网站建设平台蓝天云免费空间主机
  • 邢台 建网站东莞公司展厅设计公司
  • seo做的最好的网站2018wordpress 主题
  • 禅城网站设计微信自媒体怎么赚钱
  • 源码建站和模板建站区别做策划的都上哪些网站搜索资料间
  • 摄影师网站模板手机版官方网站的建设
  • 网站开发完了备案未备案域名
  • 英迈寰球网站建设教育培训机构排名前十
  • 网站程序开发语言网络科技公司起名免费
  • 网站推广方法是什么免费行情软件网站大全
  • 做同城特价的网站有哪些上海贸易公司名录
  • 安徽省建设厅官方网站丹徒网站建设服务
  • 宁夏做网站的wordpress显示最后更新时间
  • 购物网站php源代码网站开发数据交互
  • 网页内嵌网站表单插件wordpress