Android,通过Handler.post函数调用finish()

Posted

技术标签:

【中文标题】Android,通过Handler.post函数调用finish()【英文标题】:Android, call finish() through Handler.post function 【发布时间】:2017-03-27 09:42:15 【问题描述】:

我有活动 A 和 B 现在我有一些在另一个线程中处理的“事件”。 如果触发,应用应该启动 B,然后销毁 A。

在线程中,我有一个处理程序来将内容发布到 UI 线程。

Handler hexample = new Handler(Looper.getMainLooper());

现在切换没问题,但是调用finish()方法是:

hexample.post(new Runnable() 
    @Override
    public void run() 
    Intent intent = new Intent(getApplicationContext(),LobbyActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
    ((Activity)getApplicationContext()).finish();
    
);

这不起作用,因为我的课程不能转换为 android.app.Activity 如何让它发挥作用?

【问题讨论】:

【参考方案1】:

finish() 就足够了,不需要强制转换。在这种情况下,您不能调用另一个 Activity 的完成。只有当您在 Activity A 中并想要启动 B,然后启动 B 并完成 A 时,您的方案才有效。

【讨论】:

不要在意图中引用 ApplicationContext。给一个合理的上下文,比如LocateActivity.class,如果你不是在活动或服务中工作,当你构建这个类时,从活动中传递上下文 我正在从应用程序级别工作,所以我现在通过当前活动。感谢您的帮助!

以上是关于Android,通过Handler.post函数调用finish()的主要内容,如果未能解决你的问题,请参考以下文章

[Android] 消息处理机制

[Android] 消息处理机制

android的按钮如何启动一个线程

在谷歌地图v2 android中同时旋转标记组的动画

Android的Handler基本原理源码分析

Android的Handler基本原理源码分析