mongodbデータベースを更新してユーザーがアプリケーションを開いたり閉じたりするときにアプリケーションが追跡するメソッドを実装しようとしています。 アクティビティの開始時にonCreate()またはonResume()メソッドが常に開始され、アクティビティが終了するときにonPause()またはonStop()メソッドが呼び出していることがわかります。私がこれまで試した「VEの何閉じる/開始アプリケーションでユーザーを追跡
はこれです:私が使用し
のonCreate()、onResume()でpublic void updateOnline(String fbid, boolean login){
new updateOnlineAsync(fbid, login).execute();
}
public class updateOnlineAsync extends AsyncTask<Void, Void, Void>{
String fbid;
boolean login;
public updateOnlineAsync(String fbid, boolean login){
this.fbid=fbid;
this.login=login;
}
@Override
protected Void doInBackground(Void... params) {
BasicDBObject query = new BasicDBObject();
query.put("fbid", this.fbid);
Document myDoc = fb_users.find(query).first();
if(login){
Log.d("...", "x");
Document listItem = new Document("online", "0");
Document updateQuery = new Document("$set", listItem);
fb_users.updateOne(myDoc, updateQuery);
}else{
Log.d("...", "y");
Document listItem = new Document("online", "1");
Document updateQuery = new Document("$set", listItem);
fb_users.updateOne(myDoc, updateQuery);
}
return null;
}
}
方法:
ServerRequest serverRequest = new ServerRequest(this);
Profile profile = Profile.getCurrentProfile();
serverRequest.updateOnline(profile.getId(), false);
私のアプリケーション私はこのAsyncTaskを呼び出していますが、すべての活動で私が使用
そして、onPause()、onStop()メソッド:
ServerRequest serverRequest = new ServerRequest(this);
Profile profile = Profile.getCurrentProfile();
serverRequest.updateOnline(profile.getId(), true);
私は、これが働いて、私の文書のウィットを更新する必要があることだと思いますhユーザーのオンライン/オフライン状況ですが、そうではありません。私はこれがAsyncTaskのためにアプリケーションがバックグラウンドで動作していないか、または私が何か間違っているときに動作していないのだろうかと思います。とにかくどんな助けも大歓迎です。
EDIT
Log.d()AsyncTaskのptintsのYはなく、Xは。 AsyncTaskはonCreate()メソッドでは実行されていますが、onStop()では実行されません。
私のアプリではアクティビティを変更してテストしました。アプリケーションのアクティビティを変更しているときや、スマートフォンの中央ボタンを押して(バックグラウンドに送信したとき)、オンラインフィールドがデータベースで更新されます。メソッドが完全に閉じているときにだけメソッドが動作していません
'BasicDBObject'が何であるかを見ることなく、そこに問題がある可能性があります。しかし、あなたのログが 'y'ブロックに当たっていて、 'x'ではない場合は、ログインの真の値で 'updateOnline()'を呼んでいますか? アプリケーションをデバッグし、コードを1行ずつ進めましたか?各ステップで期待したとおりの変数の価値はありましたか? –
私は自分のアプリでアクティビティを変更してテストしました。アプリケーションのアクティビティを変更しているときや、スマートフォンの中央ボタンを押して(バックグラウンドに送信したとき)、オンラインフィールドがデータベースで更新されます。このメソッドは、完全に閉じているときにのみ機能しています。 –