gpt4 book ai didi

android - 如何在 android 中使用 Firebase EventListener 作为后台服务?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:10:59 25 4
gpt4 key购买 nike

我正在尝试制作即使应用程序关闭也能运行的后台服务。这个服务应该监听 Firebase 的变化,并根据触发器启动应用程序。我不知道我是否遗漏了代码中的某些内容,或者甚至没有接近正确答案,但这是我的代码:

public class FireBaseService extends Service {

private HashMap<String, String> fireBaseBattery;

@Override
public void onCreate() {
super.onCreate();

fireBaseBattery = new HashMap<>();
final Firebase firebaseRef_Battery = new Firebase("the url i want to take data from");

firebaseRef_Battery.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.getValue() != null) {
fireBaseBattery = (HashMap<String, String>) dataSnapshot.getValue();
String battery = (String) fireBaseBattery.get("battery");
int battery_int = Integer.parseInt(battery);

System.out.println("SERVICE FIREBASE : " + battery);
if (battery_int <= 10) {
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
startActivity(intent);
}
}
}

@Override
public void onCancelled(FirebaseError firebaseError) {

}
});
}

@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}

这是 list :

    <uses-permission android:name="android.permission.READ_SMS" />
<application
android:name=".ParseApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">

<service android:enabled="true"
android:name=".FireBaseService">
</service>
<activity
android:name=".Launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>

编辑:我在 MainActivity.class 中添加了一行来启动服务

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
startService(new Intent(this, FireBaseService.class));
}

最佳答案

我按如下方式编辑了应用程序:

  1. Service 类扩展 Activity 而不是 Service
  2. 我直接在应用程序标签内添加了服务 list ,如下所示:

android:name=".FireBaseService"

  1. 无需从主 Activity 启动服务。

编辑 list :

 <uses-permission android:name="android.permission.READ_SMS" />
<application
android:name=".FireBaseService"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">

<activity
android:name=".Launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

关于android - 如何在 android 中使用 Firebase EventListener 作为后台服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37751823/

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