当前位置:首页 » 安卓系统 » androidexit0

androidexit0

发布时间: 2023-07-16 14:34:58

❶ android如何避免System.exit(0)带来的在部分机型有时退出后还会再次启动,少部分的用户体验不太好。

System.exit(0) 并不一定会执行了gc,可以学郭神继承BaseActivity,写一个收集全部activity的类,onCreate添加,onDestroy remove,调用finishAll()移除所有activity,但是我觉得继承BaseAdapter太麻烦,而且activity越写越多,有时候使用第三方库又不得不继承其他activity,而我的写法是在郭神的思路上修改一下,在application的ActivityLifecycleCallbacks回调监听上面去写add 和 remove,finishAll。我前两天看到还有一种很简单的方法,还没有有去实践过,好像是这样的:
随便哪个activity或者fragment(getActivity()),然后调用 finishAffinity(),然后调用System.exit(0); System.gc(); 但后来我有查了下,finishAffinity()这个方法是让当前这个Activity所在的栈内的所有Activity退栈,那么,假设,我使用了某个使用了singleInstance 就很尴尬了,当然,也可以判断一下,应为一般用singleinstance的也不多,isFinish()判断一下它是否已经finish,没有就调用一下finish()

❷ Android开发怎样彻底退出APP我有两个activity,在第一个activity中用system.exit(0)可以

你在第一个activity里用exit退出,只是结束了当前页面而已,当你在第一个页面exit因为只有一个页面,所以可以,当有两个以上页面是,结束了第二个页面就会跳到第一个页面去,不能彻底退出。解决办法:在配置文件里把最后你要退出的那个页面的launchMode设置为singleTask,例如你上面说的第二个activity,你要退出的时候,直接在第二个activity里finish()就可以了。

❸ android system进程是什么进程

Android上杀掉进程的方式有两种,分别是System.exit(0)和Process.killProcess(Process.myPid()),那么这两种方式有何区别呢?
相同点
APP进程都会被直接杀掉
我们通过adb shell ps可以查看当前手机所有运行的进程状态,
在执行完这两种方式之后,APP进程都会消失。
生命周期都不会被调用
onPause()、onStop()和onDestory(),也包括onSaveInstanceState,这些生命周期方法都不会被调用。
不同点
影响范围不同
System.exit(0)只会影响当前的程序;
Process.killProcess(Process.myPid())会杀掉所有PID一样的进程,比如那些拥有相同UID的应用,统统都会被杀掉。
方式不一样
System.exit(0)是停止程序的虚拟机;
Process.killProcess(Process.myPid()) 是通过PID去杀死进程。
补充
System.exit(0)和System.exit(1)
看官方的方法注释,如下:
Use 0 to signal success to the calling process and 1 to signal failure.11

0:代表成功的信号;
1:代表失败的信号,常用于捕获到异常执行。
使用方式
从上面可以看出,这两种方式都比较暴力,不推荐使用,尤其是现在的手机配置都很好的情况下。而且进程都被杀掉了,相应的Service也会被干掉,如果存在推送的话,会出现各种莫名的问题。
真要用的话,也得注意:如果程序有多个Activity,最好在主Activity中的OnBackPressed()中使用,如果在其它Activity中使用的话,APP会直接退出,退出后会重启应用,这样对于用户体验不是很好。

❹ android System.exit(0)重启上一个页面

MainActivity代码:直接启动第二个Activity:
[java] view plain
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent=new Intent(MainActivity.this,NewActivity.class);
startActivity(intent);
}

}
NewActivity代码:
[java] view plain

public class NewActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Button button=new Button(NewActivity.this);
button.setText("退出测试");
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
System.exit(0);
}
});
setContentView(button);
}
}
12345678910111213141516171819

此时点击button退出应用重启,修改MainActivity:启动新的Activity,finish存在MainAcitvity
[java] view plain
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent=new Intent(MainActivity.this,NewActivity.class);
startActivity(intent);
this.finish();
}

}
总结:可能是因为应用栈中还存在别的activity没有finish调,导致应用重新启动。使用System.exit(0)时,确保任务栈中所有activity已经finish。

热点内容
征婚交友源码 发布:2025-02-05 17:45:24 浏览:917
3nvm服务器怎么搭建 发布:2025-02-05 17:43:52 浏览:660
cocosandroid开发 发布:2025-02-05 17:22:17 浏览:668
编程员发型 发布:2025-02-05 17:09:18 浏览:225
网站会员管理源码 发布:2025-02-05 17:03:32 浏览:193
服务器端口怎么调节 发布:2025-02-05 16:57:41 浏览:47
乐山海棠社区民意上传 发布:2025-02-05 16:55:52 浏览:510
编程老爷爷 发布:2025-02-05 16:48:20 浏览:129
支持ftp的免费空间 发布:2025-02-05 16:32:00 浏览:891
python时间比较 发布:2025-02-05 16:31:46 浏览:52