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)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)