gpt4 book ai didi

service - 在服务的当前 Activity 中显示 toast

转载 作者:太空狗 更新时间:2023-10-29 15:36:47 25 4
gpt4 key购买 nike

如果服务有一些更新,我需要在当前 Activity 中显示 Toast。所以服务调用服务器,如果它是一些更新,我需要通知用户不管他在哪个 Activity 。我尝试这样实现它:

 Toast.makeText(ApplicationMemory.getInstance(), "Your order "+progress+"was updated", 
Toast.LENGTH_LONG).show();

在哪里

public class ApplicationMemory extends Application{
static ApplicationMemory instance;

public static ApplicationMemory getInstance(){
return instance;
}
}

而且它不起作用。我还尝试使用

获取当前 Activity 名称
ActivityManager am = (ActivityManager) ServiceMessages.this.getSystemService(ACTIVITY_SERVICE);
List< ActivityManager.RunningTaskInfo > taskInfo = am.getRunningTasks(1);
ComponentName componentInfo = taskInfo.get(0).topActivity;
componentInfo.getPackageName();
Log.d("topActivity", "CURRENT Activity ::" + componentInfo.getClassName());

但不知道如何从 ComponentName 获取上下文对象。

最佳答案


尝试使用处理程序。关于 Toasts 的事情是,您必须在 UI 线程上运行 makeText,服务不会在该线程上运行。 Handler 允许您发布一个可运行对象以在 UI 线程上运行。在这种情况下,您将在 onStartCommand 方法中初始化一个 Handler。

private Handler mHandler;

@Override
onStartCommand(...) {
mHandler = new Handler();
}

private class ToastRunnable implements Runnable {
String mText;

public ToastRunnable(String text) {
mText = text;
}

@Override
public void run(){
Toast.makeText(getApplicationContext(), mText, Toast.LENGTH_SHORT).show();
}
}


private void someMethod() {
mHandler.post(new ToastRunnable(<putTextHere>);
}

关于service - 在服务的当前 Activity 中显示 toast ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12730675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com