【发布时间】:2018-05-13 14:18:06
【问题描述】:
今天我将一个 google play services 库更新为一个更新版本的应用程序。 Eclipse 没有给我任何类型的错误,我编译了它,当我在手机上测试时工作正常,然后我转到菜单并选择退出并确认以关闭它,应用程序从屏幕上消失。 但是当你点击手机底部的方块时(当你列出所有打开的应用程序时),应用程序仍然在运行! o_O
在更新之前,应用程序关闭正常,现在退出后仍保持活动状态。但我不认为gps会导致这种问题。有什么建议???
这是我的 MainActivity.java(执行退出菜单过程的地方)
package com.myapp.radio;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.ComponentName;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.ServiceConnection;
import android.media.AudioManager;
import android.os.Bundle;
import android.os.IBinder;
import android.view.Menu;
import android.view.MenuItem;
import com.myapp.radio.R;
public class BaseActivity extends Activity {
private Intent bindIntent;
private RadioService radioService;
private static boolean isExitMenuClicked;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
isExitMenuClicked = false;
// Bind to the service
bindIntent = new Intent(this, RadioService.class);
bindService(bindIntent, radioConnection, Context.BIND_AUTO_CREATE);
setVolumeControlStream(AudioManager.STREAM_MUSIC);
}
@Override
protected void onResume() {
super.onResume();
if (isExitMenuClicked == true)
finish();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main_menu, menu);
if (radioService.getTotalStationNumber() <= 1) {
}
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Intent i;
final String thisClassName = this.getClass().getName();
final String thisPackageName = this.getPackageName();
if (item.getItemId() == R.id.radio) {
if (!thisClassName.equals(thisPackageName + ".MainActivity")) {
i = new Intent(this, MainActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
return true;
}
} else if (item.getItemId() == R.id.exit) {
String title = "Cerrar aplicación";
String message = "¿Realmente desea salir?";
String buttonYesString = "Si";
String buttonNoString = "No";
isExitMenuClicked = true;
AlertDialog.Builder ad = new AlertDialog.Builder(this);
ad.setTitle(title);
ad.setMessage(message);
ad.setCancelable(true);
ad.setPositiveButton(buttonYesString,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (radioService != null) {
radioService.exitNotification();
radioService.stop();
radioService.stopService(bindIntent);
isExitMenuClicked = true;
finish();
}
}
});
ad.setNegativeButton(buttonNoString, null);
ad.show();
return true;
} else if (item.getItemId() == R.id.about) {
if (!thisClassName.equals(thisPackageName + ".AboutActivity")) {
i = new Intent(this, AboutActivity.class);
startActivity(i);
return true;
}
} else if (item.getItemId() == R.id.facebook) {
if (!thisClassName.equals(thisPackageName + ".FacebookActivity")) {
i = new Intent(this, FacebookActivity.class);
startActivity(i);
return true;
}
} else if (item.getItemId() == R.id.twitter) {
if (!thisClassName.equals(thisPackageName + ".TwitterActivity")) {
i = new Intent(this, TwitterActivity.class);
startActivity(i);
return true;
}
}
return super.onOptionsItemSelected(item);
}
// Handles the connection between the service and activity
private final ServiceConnection radioConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName className, IBinder service) {
radioService = ((RadioService.RadioBinder) service).getService();
}
@Override
public void onServiceDisconnected(ComponentName className) {
radioService = null;
}
};
protected void onCreate1(Bundle savedInstanceState) {
// TODO Auto-generated method stub
}
}
【问题讨论】:
-
这是 Android 的正常行为。操作系统可能会选择在您关闭应用程序后将其保留在内存中。不同的设备和不同的 Android 版本在这方面可能表现出不同的行为。
-
错字,当我的意思是 MainActivity 实际上是 BaseActivity.java
-
@ScottKronheim 有没有办法摆脱它并强制关闭?您可以从用户手机关闭应用的唯一方法是查看正在运行的进程并强制保留或按正方形并单击应用右上角的 X。
-
没有办法强制你想要的行为。 Android 不能那样工作。
-
@ScottKronheim 实际上我刚才测试了两个应用程序.. 一个旧的应用程序发布了我的我和其他用户在 playstore 的应用程序。在退出后两者都保持打开状态,老实说,这是我第一次看到这个。我怀疑我的应用程序有插页式广告,如果它在退出后仍保持在后台打开,则在执行其他任务时不时会在用户手机中弹出广告。在后台运行的应用的插页式广告。
标签: android eclipse google-play-services google-apps