배경 서비스에 많이 의존하는 Android 앱이 있습니다. 서비스에서 JNI를 통해 C++에서 값을 가져오고 그 값을 일부 정적 변수로 설정합니다.Android 앱 제거시 static 변수가 기본값으로 설정
서비스가 백그라운드에서 항상 켜져 있기 때문에 App이 제거 되더라도 값은 해당 변수에 보관되어야합니다. 그러나 어쨌든 앱이 제거되거나 종료되면 정적 변수는 새로운 할당 된 값을 갖는 대신 기본값으로 재설정됩니다.
Android에서 백그라운드 서비스의 정적 변수 동작을 설명 할 수 있습니까? 감사. 여기 당신이 안드로이드에서 공유 설정을 사용할 수있는 응용 프로그램을 통해 값을 저장할 .if 사용자가 강제로 응용 프로그램 특정 응용 프로그램의 모든 서비스도 사망 죽일 때 안드로이드에서 생각 코드
public class ServiceData extends Service{
public static void setUser_id(int id) {
user_id = id;
}
public static void setUserData_id(int id) {
user_data_id = id;
}
protected static int user_id = -1;
protected static int user_data_id = -1;
@Override public void onCreate() {
super.onCreate();
context = getApplicationContext();
running = true;
Log.d(TAG, "in onCreate");
Toast.makeText(context,"in onCreate", Toast.LENGTH_SHORT).show();
}
@Override public int onStartCommand(Intent intent, int flags, int startId) {
Log.d(TAG, "in onStartCommand");
Toast.makeText(context,"in onStartCommand", Toast.LENGTH_SHORT).show();
return START_STICKY;
}
@Override public IBinder onBind(Intent intent) {
Log.d(TAG, "in onBind");
Toast.makeText(context,"in onBind", Toast.LENGTH_SHORT).show();
return messenger.getBinder();
}
@Override public boolean onUnbind(Intent intent) {
Log.d(TAG, "in onUnbind");
Toast.makeText(context,"in onUnBind", Toast.LENGTH_SHORT).show();
return super.onUnbind(intent);
//return true;
}
@Override public void onRebind(Intent intent) {
Log.d(TAG, "in onRebind");
Toast.makeText(context,"in onRebind", Toast.LENGTH_SHORT).show();
super.onRebind(intent);
}
@Override public void onDestroy() {
super.onDestroy();
Log.d(TAG, "in onDestrory");
Toast.makeText(context,"in onDestroy", Toast.LENGTH_SHORT).show();
this.manager.cancel(R.string.service_started);
running = false;
}
정적 변수 대신 SharedPreferences를 사용해야합니다. –
네, 그렇지만 sharedPreference를 사용하고 싶지 않습니다 ... 나는 이것도 작동해야한다고 생각합니다 ... –
네,하지만 응용 프로그램이 추락 한 정적 변수가 몇 번 기본값으로 설정되었습니다. –