我試圖做一個後臺服務,即使應用程序關閉也能運行。此服務應該偵聽Firebase更改,並根據觸發器啓動應用程序。我不知道我是否缺少代碼的東西或者甚至還沒有接近正確的答案,但這裏是我的代碼:如何在Android中使用Firebase EventListener作爲後臺服務?
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;
}
}
這是清單:
<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));
}
在應用程序標記內添加您的服務 – Shubhank
我做了,但沒有起作用 – MuhammadNe
如果您的服務正在啓動並且代碼正在其中執行,請進行調試。 – Shubhank