日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android 程序退出广播,android 利用广播实现程序的强制退出

發布時間:2024/9/18 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 程序退出广播,android 利用广播实现程序的强制退出 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

利用廣播機制,實現程序的強制退出。

前面有篇博文,寫到了一鍵退出,這里利用到了那里的ActivityCollector的集合和BaseActivity

功能:打開程序后,先登錄,登錄成功后,進入主頁面,主頁面有個按鈕,點擊后彈出窗口,用戶點擊 “是”之后退出程序

1、ActivityCollectorpackage?com.yuanlp.forceexit;

/**

*?Created?by?原立鵬?on?2017/6/28.

*/

import?android.app.Activity;

import?java.util.ArrayList;

import?java.util.List;

/**

*?activity集合

*/

public?class?ActivityCollector?{

public?static?List?activityList=new?ArrayList<>();

public?static?void?addActivity(Activity?activity){

activityList.add(activity);

}

public?static?void?remove(Activity?activity){

activityList.remove(activity);

}

public?static?void?finishAll(){

for?(Activity?activity:activityList){

if?(!activity.isFinishing()){??//判斷activity是否銷毀

activity.finish();???//銷毀activity

}

}

}

}

2、BaseActivity??作為后面activity的父類,繼承自AppComapActivity

package?com.yuanlp.forceexit;

import?android.content.BroadcastReceiver;

import?android.content.Context;

import?android.content.DialogInterface;

import?android.content.Intent;

import?android.content.IntentFilter;

import?android.os.Bundle;

import?android.support.v7.app.AlertDialog;

import?android.support.v7.app.AppCompatActivity;

/**

*?Created?by?原立鵬?on?2017/6/28.

*/

public?class?BaseActivity??extends?AppCompatActivity{

private?MyForceExitReceiver?receiver;??//聲明一個自己的廣播接收者內部類

@Override

protected?void?onCreate(Bundle?savedInstanceState)?{

super.onCreate(savedInstanceState);

ActivityCollector.addActivity(this);

}

/**

*?在activity處于返回棧頂,即處于焦點時,注冊一個廣播接收者

*/

public?void?onResume(){

super.onResume();

IntentFilter?intentFilter=new?IntentFilter();??//實例化一個intent過濾器

intentFilter.addAction("com.yuanlp.exit.FORCEXIT");??//只關心自己想要的廣播

receiver=new?MyForceExitReceiver();

registerReceiver(receiver,intentFilter);??//動態注冊廣播

}

public?void?onPause(){??//當當前activity被彈出框占用時,解除注冊

super.onPause();

if?(receiver!=null){

unregisterReceiver(receiver);

receiver=null;

}

}

public?void?onDestroy(){

super.onDestroy();

ActivityCollector.finishAll();

}

/**

*?一個廣播接收者,接收到廣播后,彈出框提示用戶重新登錄,強制退出

*/

private?class?MyForceExitReceiver?extends?BroadcastReceiver{

@Override

public?void?onReceive(final?Context?context,?final?Intent?intent)?{

AlertDialog.Builder?builder=new?AlertDialog.Builder(context);

builder.setTitle("warning");

builder.setMessage("你被強制退出,請重新登錄");

builder.setCancelable(false);??//禁止用戶取消這個彈框

builder.setPositiveButton("OK",?new?DialogInterface.OnClickListener()?{

@Override

public?void?onClick(DialogInterface?dialog,?int?which)?{

ActivityCollector.finishAll();???//銷毀所有活動

Intent?intent=new?Intent(context,LoginActivity.class);?//跳轉至登錄界面

context.startActivity(intent);

}

});

builder.show();

}

}

}

3、LoginActivity ? 登錄成功后,跳轉到MainActivity界面。這里要在AndroidManifext.xml設置為這個activity是launcher,即打開后的第一個界面package?com.yuanlp.forceexit;

import?android.content.Intent;

import?android.os.Bundle;

import?android.view.View;

import?android.widget.EditText;

public?class?LoginActivity?extends?BaseActivity?{

private?EditText?mName;

private?EditText?mPassword;

@Override

protected?void?onCreate(Bundle?savedInstanceState)?{

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_login);

mName?=?(EditText)?findViewById(R.id.et_name);

mPassword?=?(EditText)?findViewById(R.id.et_password);

}

public?void?login(View?view){

String?name=mName.getText().toString().trim();

String?password=mPassword.getText().toString().trim();

if?("admin".equals(name)&&"123456".equals(password)){

Intent?intent=new?Intent(this,MainActivity.class);

startActivity(intent);

}

}

}

4、activity_login.xml ?簡單的一個LinearLayout,vertical排版,里面放了2個水平布局的LinearLayout,分別放一個用戶名和密碼的EditText。最下方一個button,實現登錄方法<?xml ?version="1.0"?encoding="utf-8"?>

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

tools:context="com.yuanlp.forceexit.LoginActivity">

android:layout_width="match_parent"

android:layout_height="60dp"

android:orientation="horizontal">

android:id="@+id/et_name"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_weight="1"

android:ems="10"

android:hint="賬號"

android:inputType="textPersonName"/>

android:layout_width="match_parent"

android:layout_height="60dp"

android:orientation="horizontal">

android:id="@+id/et_password"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_weight="1"

android:ems="10"

android:hint="密碼"

android:inputType="textPersonName"/>

android:id="@+id/button"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:onClick="login"

android:text="Button"/>

5、MainActivity

里面主要的是一個button的方法,實現發送廣播。package?com.yuanlp.forceexit;

import?android.content.Intent;

import?android.os.Bundle;

import?android.view.View;

public?class?MainActivity?extends?BaseActivity?{

@Override

protected?void?onCreate(Bundle?savedInstanceState)?{

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

public?void?exit(View?view){

Intent?intent=new?Intent("com.yuanlp.exit.FORCEXIT");

sendBroadcast(intent);??//發送廣播

}

}

6、activity_main.xml<?xml ?version="1.0"?encoding="utf-8"?>

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context="com.yuanlp.forceexit.MainActivity">

android:id="@+id/button2"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:onClick="exit"

android:text="強制退出"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintTop_toTopOf="parent"

tools:layout_editor_absoluteX="126dp"/>

總結

以上是生活随笔為你收集整理的android 程序退出广播,android 利用广播实现程序的强制退出的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。