gpt4 book ai didi

java - 是否可以从主屏幕小部件访问 MainActivity 中的方法?

转载 作者:行者123 更新时间:2023-12-01 18:04:23 25 4
gpt4 key购买 nike

我为我的应用程序制作了一个主屏幕小部件。我需要它与我的 MainActivity 中的方法进行通信。

我该怎么做?

开发文档提到“控制小部件”,但没有解释如何实现它们。(https://developer.android.com/guide/topics/appwidgets/overview#control-widgets)。

我需要服务或接口(interface)来在小部件和 MainActivity 之间进行通信吗?

我尝试过的:

我尝试使用 SharedPreferences 将点击计数器值从 WidgetProvider OnReceive 方法传递到我的 MainActivity。这在一定程度上确实有效,但它需要双向实时通信,所以它不适合。这就是为什么我在考虑服务方面的原因。但还有更好的选择吗?

如果我使用一项服务,它会是特定的服务吗?像“RemoteViewsService”或“IntentService”?

这是我的 WidgetProvider 中的代码示例:

    @Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);

if (ACTION_SIMPLE_APPWIDGET.equals(intent.getAction())) {
if (mCounter < optionsStrings.length - 1) {
mCounter++;
} else {
mCounter = 0;
}

RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.app_widget);

stringText = optionsStrings[mCounter];
views.setTextViewText(R.id.appwidget_text, stringText);

根据计数器值,我需要触发MainActivity中的各种方法。

最佳答案

MainActivity 可能是 destoyed当你尝试与它沟通时。您需要一个您的 Widget 和 Activity 都可以与之通信的服务。据我了解,一个IntentService可能就是你想要的。

MainActivity 启动时,您需要附加到您的服务并向其询问最近发送的计数器值。然后,您应该能够做您想做的事情。

关于java - 是否可以从主屏幕小部件访问 MainActivity 中的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60581250/

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