安卓程序退出代码

安卓程序退出代码,第1张

Android2.2版本

Intent

startMain

=

new

Intent(Intent.ACTION_MAIN)

startMain.addCategory(Intent.CATEGORY_HOME)

startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)

startActivity(startMain)

System.exit(0)//退出程序

Android2.2以下版本

1、在配置文件中加入权限:

<uses-permission

android:name="android.permission.RESTART_PACKAGES"

/>

2、ActivityManager

am

=

(ActivityManager)getSystemService

(Context.ACTIVITY_SERVICE)

am.restartPackage(getPackageName())

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()

}

})

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

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/7838941.html

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

发表评论

登录后才能评论

评论列表(0条)

保存