前景方法在 Android 中的 Jellybean 中不起作用
Foreground method is not working in Jellybean in Android
我已经为我的聊天应用程序实现了该服务,这个概念应该是在线的,并且最后一次看到就像 whatsapp 一样。
当我为我的应用程序实现在线和最后一次看到的服务时,当我从 lollipop 到 lollipop 检查时,它工作 100% 正常,但是当我从 jellybean 到 lollipop 检查同样的东西时,它不再工作了。
@Override
protected void onStop() {
super.onStop();
if (Utils.isAppSentToBackground(getApplicationContext())) {
// call web Service here
// Log.e("Angel", "in back");
Utils.setInBackGround(getApplicationContext(), true);
callOnlineOfflineService("0");
}
}
// code for resume called
@Override
protected void onResume() {
super.onResume();
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
if (Utils.isInBackGround(getApplicationContext())) {
// Log.e("Angel", "From back");
Utils.setInBackGround(getApplicationContext(), false);
callOnlineOfflineService("1");
}
}
在这里,Util 是我常用的 class,我在其中实现了常用方法,setInBackGround 方法将凭据设置到 SessionManager。
void callOnlineOfflineService(String status) {
Log.e("status:::::online", "status" +status);
if(!myclass.isConnected(getApplicationContext())){
errordialog(getResources().getString(R.string.no_internet));
return;
}
final List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("mode", "setUserOnlineStatus"));
params.add(new BasicNameValuePair("userId", uid));
params.add(new BasicNameValuePair("status", status));
Log.e("status:::::online", "status" +params);
Runnable runnable = new Runnable() {
public void run() {
UserFunctions userFunction = new UserFunctions(getApplicationContext());
JSONObject json = userFunction.CommonObject(params);
try {
final String s = json.getString("status");
Log.e("status:::::online", "status" +s);
} catch (JSONException e) {
e.printStackTrace();
return;
}
}
};
Thread mythread = new Thread(runnable);
mythread.start();
}
我们将非常感谢您的辛勤工作和努力。
我已经尝试并得出了这个结论并且有效。
请确保您已授予以下权限,之后以上代码对任何人都可以正常工作,否则它不适用于某些 OS。
<uses-permission android:name="android.permission.GET_TASKS" />
我已经为我的聊天应用程序实现了该服务,这个概念应该是在线的,并且最后一次看到就像 whatsapp 一样。
当我为我的应用程序实现在线和最后一次看到的服务时,当我从 lollipop 到 lollipop 检查时,它工作 100% 正常,但是当我从 jellybean 到 lollipop 检查同样的东西时,它不再工作了。
@Override
protected void onStop() {
super.onStop();
if (Utils.isAppSentToBackground(getApplicationContext())) {
// call web Service here
// Log.e("Angel", "in back");
Utils.setInBackGround(getApplicationContext(), true);
callOnlineOfflineService("0");
}
}
// code for resume called
@Override
protected void onResume() {
super.onResume();
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
if (Utils.isInBackGround(getApplicationContext())) {
// Log.e("Angel", "From back");
Utils.setInBackGround(getApplicationContext(), false);
callOnlineOfflineService("1");
}
}
在这里,Util 是我常用的 class,我在其中实现了常用方法,setInBackGround 方法将凭据设置到 SessionManager。
void callOnlineOfflineService(String status) {
Log.e("status:::::online", "status" +status);
if(!myclass.isConnected(getApplicationContext())){
errordialog(getResources().getString(R.string.no_internet));
return;
}
final List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("mode", "setUserOnlineStatus"));
params.add(new BasicNameValuePair("userId", uid));
params.add(new BasicNameValuePair("status", status));
Log.e("status:::::online", "status" +params);
Runnable runnable = new Runnable() {
public void run() {
UserFunctions userFunction = new UserFunctions(getApplicationContext());
JSONObject json = userFunction.CommonObject(params);
try {
final String s = json.getString("status");
Log.e("status:::::online", "status" +s);
} catch (JSONException e) {
e.printStackTrace();
return;
}
}
};
Thread mythread = new Thread(runnable);
mythread.start();
}
我们将非常感谢您的辛勤工作和努力。
我已经尝试并得出了这个结论并且有效。
请确保您已授予以下权限,之后以上代码对任何人都可以正常工作,否则它不适用于某些 OS。
<uses-permission android:name="android.permission.GET_TASKS" />