gpt4 book ai didi

android - 使用 Intent.ACTION_TIME_TICK

转载 作者:行者123 更新时间:2023-11-30 00:04:26 31 4
gpt4 key购买 nike

如何正确使用 Intent.ACTION_TIME_TICK?我想创建一个每分钟检查一次电池电量的接收器。

我使用广播接收器类女巫首先从 main-Activity 启动。启动广播接收器不是问题。当应用程序打开时,一切正常。但是,如果应用结束,我将不再收到广播信息。

现在我的问题是:完成应用程序后如何继续接收信息?

我的源代码。

开始广播:

public class Main extends AppCompatActivity {
[...]
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String app = getResources().getString(R.string.app_name);
[...]
btnStart.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
registerReceiver(receiver, new IntentFilter(Intent.ACTION_TIME_TICK));
Log.d(app + ".Main", "register receiver with '" + Intent.ACTION_TIME_TICK + "'");
}
});
}
}

在Receiver.class中接收信息:

public class Receiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
BatteryManager bm = (BatteryManager)context.getSystemService(context.BATTERY_SERVICE);
int akku = bm.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY);
Calendar calendar = Calendar.getInstance();
int minute = calendar.get(Calendar.MINUTE);
if(action.equals(Intent.ACTION_TIME_TICK))
{
Log.d(app + ".Receiver", "Receiver detected '" + action + "'");
if(minute%5 == 0) {
startNotification(akku);
}
}
}
}

list :

<receiver android:name=".Receiver"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.ACTION_TIME_TICK"></action>
</intent-filter>
</receiver>

最佳答案

您需要在服务中注册接收器,然后它才会在后台运行。我不是 100% 知道它,但我认为如果你在 list 中定义它,TIME_TICK 不起作用,你必须在类中注册它。

关于android - 使用 Intent.ACTION_TIME_TICK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49259384/

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