怎么在android实现退出功能

怎么在android实现退出功能,第1张

Android Studio中,随时随地的退出程序(记得导入相应的包,可以设置自动导入所需的包的,下面的代码还没有导入包的部分):

①新建一个 ActivityCollector 类,作为活动管理器碰烂,代码如下所示:

public class ActivityCollector {

public static List<Activity>activities = new ArrayList<>()

public static void addActivity(Activity activity) {

activities.add(activity)

}

public static void removeActivity(Activity activity) {

activities.remove(activity)

}

public static void finishAll() {

for (Activity activity : activities)

{

if(!activity.isFinishing())

{

activity.finish()

}

}

activities.clear()

//以下是杀死当前程序进程的代码,保证程序彻底退出。

android.os.Process.killProcess(android.os.Process.myPid())

}

}

②再新建一个类BaseActivity,并隐磨让所有活动继承这个类,也就是其灶吵斗他的全部活动都改为extends BaseActivity,而不是原来的extends AppCompatActivity。

public class BaseActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState)

Log.d("BaseActivity", getClass().getClass().getSimpleName())

ActivityCollector.addActivity(this)

}

@Override

protected void onDestroy() {

super.onDestroy()

ActivityCollector.removeActivity(this)

}

}

③在你想要退出程序的页面(Activity)的setContentView(R.layout.*****)下面加上如下代码,从而实现点击一个按钮退出整个程序。

Button button3 = (Button) findViewById(R.id.*****)

button3.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

ActivityCollector.finishAll()

}

})

//*号部分看具体情况而定

如果退出整个程序,如下 *** 作:方式一:Intent intent=new Intent(Intent.ACTION_MAIN)intent.addCategory(Intent.CATEGORY_HOME)intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)this.startActivity(intent)System.exit(0)方式二:android.os.Process.killProcess(android.os.Process.myPid())android 完全退出程序有几个activity,有一需求是在一个activityA点击back键退出系统而不是跳到之前的activity首先想到的是清空activityA的昌或堆栈,使用intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)但是该activityA不是已经存在于堆栈底端的,所以清除的只是堆栈中该activityA上面耐吵伍碰中的activity,但后退后还是会返回堆栈中该activityA下面的activity。

1.后面添加了一个菜单返回功能键,这个方法也只能用system.exit(0)来关闭当前活动的Activity,附代码:

public boolean onCreateOptionsMenu(Menu menu)

{

super.onCreateOptionsMenu(menu)

MenuItem item = menu.add(Menu.NONE, Menu.NONE, Menu.NONE, "Exit")

item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener()

{

public boolean onMenuItemClick(MenuItem item)

{

System.exit(0)

return true

}

})

return true

}

2.这样太不方便,每次退出界面之后应用程做罩轿序还在运行,

网上提供了几种方法,将下面SysApplication这个类复制到工程里面,然后纯肆在每个Acitivity的oncreate方法里面通过SysApplication.getInstance().addActivity(this)添加当前Acitivity到ancivitylist里面去闷手,最后在想退出的时候调用SysApplication.getInstance().exit()可直接关闭所有的Acitivity并退出应用程序。

附代码:

import java.util.LinkedList

import java.util.List

import android.app.Activity

import android.app.AlertDialog

import android.app.Application

import android.content.DialogInterface

import android.content.Intent

public class SysApplication extends Application {

private List mList = new LinkedList()

private static SysApplication instance

private SysApplication() {

}

public synchronized static SysApplication getInstance() {

if (null == instance) {

instance = new SysApplication()

}

return instance

}

// add Activity

public void addActivity(Activity activity) {

mList.add(activity)

}

public void exit() {

try {

for (Activity activity : mList) {

if (activity != null)

activity.finish()

}

} catch (Exception e) {

e.printStackTrace()

} finally {

System.exit(0)

}

}

public void onLowMemory() {

super.onLowMemory()

System.gc()

}

}

3.在应用程序里面 的activity的oncreate里面添加SysApplication.getInstance().addActivity(this)

如:

public void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState)

setContentView(R.layout.main)

SysApplication.getInstance().addActivity(this)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12353969.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存