當應用程序關閉或者後台時,以下代碼將幫助你發布內容:import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.Handler;
import android.os.IBinder;
import android.widget.Toast;
public class SendDataService extends Service {
private final LocalBinder mBinder = new LocalBinder();
protected Handler handler;
protected Toast mToast;
public class LocalBinder extends Binder {
public SendDataService getService() {
return SendDataService. this;
}
}
@Override
public IBinder onBind(Intent intent) {
return mBinder;
}
@Override
public void onCreate() {
super.onCreate();
}
@Override
public void onDestroy() {
super.onDestroy();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
handler = new Handler();
handler.post(new Runnable() {
@Override
public void run() {
//write your code to post content on server
}
});
return android.app.Service.START_STICKY;
}
}
更多關於我的代碼的說明是:
服務運行在 background 中,即使應用程序在 background 中,但記住它總是在主線程上運行,因為我創建了一個單獨的線程。
即使因為服務被銷毀,服務也會自動啟動,因為 background 會自動重新啟動。
檢查應用程序是否在前台/後台代碼將幫助你:private boolean isAppOnForeground(Context context) {
ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List appProcesses = activityManager.getRunningAppProcesses();
if (appProcesses == null) {
return false;
}
final String packageName = context.getPackageName();
for (RunningAppProcessInfo appProcess : appProcesses) {
if (appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND && appProcess.processName.equals(packageName)) {
return true;
}
}
return false;
}
}
//Use like this:
boolean foregroud = new ForegroundCheckTask().execute(context).get();
快樂編碼 !