Статические переменные не возвращаются правильно?
Я создаю маленькое приложение, которое работает довольно хорошо с сервисом и деятельностью прямо сейчас.
Хотя я пытаюсь сохранить некоторую статическую информацию при входе в систему (например, служба уже запущена?) В статическое логическое значение isRunning. Он будет установлен в true при onCreate(), но когда я вызываю его позже из действия, он всегда возвращает false.
Из сервиса:
public static boolean isRunning = false;
public void onCreate() {
super.onCreate();
isRunning = true;
}
Кто-нибудь знает, почему это не работает? Я пытался использовать некоторые журналы, чтобы выяснить, что происходит, но я не могу понять это.
Из деятельности
public void onResume() {
super.onResume();
if(mIsBound) {
Log.i(LOG_TAG, "Resuming: Service is running");
if(Service.isRunning) {
Log.e(LOG_TAG, "SERVICE IS RUNNING!");
} else {
Log.e(LOG_TAG, "SERVICE IS NOT RUNNING!");
}
} else {
Log.i(LOG_TAG, "Resuming: Service NOT running");
}
StopCheck.setChecked(mIsBound);
}
MIsBound - это то, что создается операцией для привязки к службе (я хотел, чтобы она была привязана, но это кажется невозможным), и она надежна в своем текущем состоянии. Но не за пределами этой деятельности, для этого я и хочу использовать статическую переменную. Service.isRunning должен вернуть true, если mIsBound равно true. Тем не менее, результатом этого небольшого теста в моем журнале является "Возобновление: служба работает", за которой следует "СЕРВИС НЕ РАБОТАЕТ".
Любые предложения или вопросы очень ценятся.
ЗАПРОШЕНО: AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.somnu.ServiceTest"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="7" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".Login"
android:debuggable="true"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".Activity"
android:debuggable="true"
android:label="@string/app_name" >
</activity>
<service
android:name=".Service"
android:process=":Service" >
</service>
</application>
</manifest>
1 ответ
Удалить андроид: процесс
Имя процесса, в котором должна быть запущена служба. Обычно все компоненты приложения выполняются в процессе по умолчанию, созданном для приложения. Он имеет то же имя, что и пакет приложения. Атрибут процесса элемента может установить разные значения по умолчанию для всех компонентов. Но компонент может переопределить значение по умолчанию своим собственным атрибутом процесса, что позволяет распределить ваше приложение по нескольким процессам.
If the name assigned to this attribute begins with a colon (':'), a new process, private to the application, is created when it's needed and the service runs in that process. If the process name begins with a lowercase character, the service will run in a global process of that name, provided that it has permission to do so. This allows components in different applications to share a process, reducing resource usage.