区块链技术博客
www.b2bchain.cn

Android 利用广播实现强制下线的功能————第一行代码

这篇文章主要介绍了Android 利用广播实现强制下线的功能————第一行代码的讲解,通过具体代码实例进行17989 讲解,并且分析了Android 利用广播实现强制下线的功能————第一行代码的详细步骤与相关技巧,需要的朋友可以参考下https://www.b2bchain.cn/?p=17989

本文实例讲述了2、树莓派设置连接WiFi,开启VNC等等的讲解。分享给大家供大家参考文章查询地址https://www.b2bchain.cn/7039.html。具体如下:

文章目录

          • 展示
          • 例子下载
          • 思路
          • 代码实现
            • 1.工具类 ActivityCollector
            • 2. BaseActivity
            • 3. MainActivity
展示

Android 利用广播实现强制下线的功能————第一行代码

例子下载

https://download.csdn.net/download/ljp345775/12481698

思路

   1. 首先我们需要使用广播,发送一条广播,来说明需要强制下线
   2. 需要注册广播,当接收到这条广播以后,弹出对话框,然后finish()所有的activity,然后跳转到LoginActivity。但是现在不知道会在哪个activity中接收到这条广播,所以我们需要定义一个BaseActivity。然后在BaseActivity中注册和销毁广播接收器

代码实现
1.工具类 ActivityCollector
import android.app.Activity  object ActivityCollector {     private val activities = ArrayList<Activity>()     //添加     fun addActivity(activity: Activity) {         activities.add(activity)     }     //移除     fun removeActivity(activity: Activity) {         activities.remove(activity)     }     //finish 所有     fun finishAll() {         for (activity in activities) {             if (!activity.isFinishing) {                 activity.finish()             }         }         activities.clear()     }  } 
2. BaseActivity
import android.content.* import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import androidx.appcompat.app.AlertDialog import com.example.kotlindemo4.LoginActivity  open class BaseActivity : AppCompatActivity() {      private lateinit var receiver: OfflineReceiver      override fun onCreate(savedInstanceState: Bundle?) {         super.onCreate(savedInstanceState)         ActivityCollector.addActivity(this)     }      /**      * 在onResume方法中注册,代表只有在栈顶的activity才需要注册      */     override fun onResume() {         super.onResume()         val intentFilter = IntentFilter("com.example.bddemo.OFFLINE")         receiver = OfflineReceiver()         registerReceiver(receiver, intentFilter)     }     /**      * 当activity退出栈顶,就不需要该广播了,所以在onPause中取消      */     override fun onPause() {         super.onPause()         unregisterReceiver(receiver)     }      override fun onDestroy() {         super.onDestroy()         ActivityCollector.removeActivity(this)     }     inner class OfflineReceiver : BroadcastReceiver() {         override fun onReceive(context: Context?, intent: Intent?) {              if (context != null) {                 AlertDialog.Builder(context).apply {                     setTitle("提示")                     setMessage("你的帐号在别处登录,请重新登录")                     setCancelable(false)                     setPositiveButton("确定") { _, _ ->                         ActivityCollector.finishAll()                         val i = Intent(context, LoginActivity::class.java)                         context.startActivity(i)                      }                     create()                     show()                 }             }         }     } }  
3. MainActivity
import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import com.example.bddemo.BaseActivity import kotlinx.android.synthetic.main.activity_main.*  class MainActivity : BaseActivity() {      override fun onCreate(savedInstanceState: Bundle?) {         super.onCreate(savedInstanceState)         setContentView(R.layout.activity_main)          btn_out.setOnClickListener {             val intent = Intent("com.example.bddemo.OFFLINE")             sendBroadcast(intent)         }     } } 

本文转自互联网,侵权联系删除Android 利用广播实现强制下线的功能————第一行代码

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » Android 利用广播实现强制下线的功能————第一行代码
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们