android 强行关闭线程

android 强行关闭线程,第1张

这个好办闭皮,这里有两个线程吧,线程A

线程mSender。

设:让线程A,监视线程mSender

第一步:

在A中定义一个变量:ExecutorService

transThread

=

Executors.newSingleThreadExecutor()

解释:transThread

官方名称是“单一线程池变量”,他是做什么的饥态昌呢,它就像我们给A的一块赛车场,用来玩遥控赛车。

第二步:

在A中再定义一个变量:

Future

transPending

解释:transPending就像我给A一个用来控制遥控赛车的遥控器一样

第三步:

在A中烂扒定义个线程mSender对象:

private

final

Runnable

mSender

=

new

Runnable()

{

public

void

run()

{

}}

解释:这是你写的对象,他就相当于我给A的一个遥控赛车。

第四步:

在A中添加如下语句:transPending

=

transThread.submit(mSender)

解释:这一步就相当于把赛车(mSender)放入场地(第一步中我们定义的transThread),并且用遥控器“transPending”来控制他。

(注:这里你是否会有疑惑,我没有写"mSender.start()"之类的语句怎么让我的赛车跑起来啊(运行run()方法),放心,有了“transPending

=

transThread.submit(mSender)”这一步,赛车是自动跑起来的,也就是mSender会自动调用run的。)

第五步:

现在你可以用遥控器“transPending”干很多事情了

transPending.cancel(true)无论线程现在是否运行中,立刻终止。

transPending.cancel(false)当前线程若没有运行(比如挂起状态)就终止它。

transPending所做的不止这些。

Android手机调用强制关闭的方法(以小米2手机为笑茄例,其他手机 *** 作方碰瞎察法类似):

1、打开手机神派的设置界面;

2、找到开发者选项,点击进入开发者选项的设置界面;

3、进入后找到显示强制关闭的选项,点击旁边的按钮,将其打开即可。

Android 怎么退出整个应用程式

在Android中,Activity有个栈,一个Activity结信谈束掉,会回到上一个Activity,并不是退出应用程式。

Android中,退出应用程式的方式:

通过pid

int pid = android.os.Process.myPid()获取当前应用程式的PID

android.os.Process.killProcess(pid)杀死当前程序

这种方法退出应用,是会保留某些后进程,例如:Service,Notifications等。

2.通过ActivityManager

ActivityManager manager = (ActivityManager)context.getSystemService(ACTIVITY_SERVICE)获取应用程式管理器

manager.killBackgroundProcesses(getPackageName())强制结束当前应用程式

这种方式退出应用,会结束本应用程式的一切活动,因为本方法会根据应用程式的包名杀死所有程序包括Activity,Service,Notifications等。

呼叫System.exit(0);

其实还有一种方法也不错,把MainActivity设定为singleTop,先跳转到MainActivity然后finish就行,不过要注意停掉相应的Service

大家都知道 Android 的 Activity 是存著历史栈的,比如从 A ->B ->C,C 完成 finish 后喊森回到 B,把所有的Activity 都 finish了,程式就自然退出了。 当然在 finish 的同时也需要是否自己程式的其他资源。所以需要想个办法把 Activity 给存起来。然后在程式退出的地方呼叫它们的 finish()郑坦亩方法。

使用全域性变数。对了,第一个想到的就是继承 Application,程式码入下。

public class AgentApplication extends Application { private List<Activity>activities = new ArrayList<Activity>()public void addActivity(Activity activity) {activities.add(activity)} @Overridepublic void onTerminate() {super.onTerminate()for (Activity activity : activities) {activity.finish()}onDestroy()System.exit(0)}}

然后在 Activity onCreate 的时候来呼叫 addActivity (),有人可能想到这个Application需要在所有的 Activity onCreate的时候都使用,需要做一个单例例项。其实根本不需要。在 Activity 中使用 this.getApplication() 就可以了。

最后在你需要推出程式的地方呼叫 application.onTerminate() 就可以了。记住:super.onTerminate() 必须呼叫,程式码中的 onDestroy()是我自己的释放其他资源的方法,不是系统的。

执行以上程式码后,在LogCat 中会出现一行提示:

Process 包名 (pid xxxxx) has died. 证明你的程式退出了。现在你可以测试了。

有几种方法,一种是:程式退出时,下方有写 在按一次退出程式

第二种,进 设定-应用程式-正在执行 这一栏自己关

有时跳转的activity较多时,还需要多次按返回键,这样感觉一点都不爽。 后面添加了一个选单返回功能键,这个方法也只能用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}想到这样太不方便了,每次退出介面之后应用程式还在执行,今天查了下资料终于把这个问题给解决了, 网上提供了几种方法,我吸收了下面这个自认为简单易懂的方法,将下面SysApplication这个类复制到工程里面,然后在每个Acitivity的oncreate方法里面通过SysApplication.getInstance().addActivity(this)添加当前Acitivity到ancivitylist里面去,最后在想退出的时候呼叫SysApplication.getInstance().exit()可直接关闭所有的Acitivity并退出应用程式。 附程式码:import java.util.LinkedListimport java.util.Listimport android.app.Activityimport android.app.AlertDialogimport android.app.Applicationimport android.content.DialogInterfaceimport android.content.Intentpublic class SysApplication extends Application { private List mList = new LinkedList()private static SysApplication instanceprivate 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()} } 在应用程式里面 的activity的oncreate里面新增SysApplication.getInstance().addActivity(this)如:public void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState)

你可以长按主屏键后,在其中关闭应用程式。但并不能完全退出执行记忆体


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

原文地址:https://54852.com/yw/8254873.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存