0
我正在運行我的Android測試應用程序中的一項服務,該服務需要顯示來自服務器中不斷增加的計數器值的烤麪包。Android KitKat沒有顯示一旦應用程序轉到背景Toast
它的起步很好,並顯示敬酒。但是,一旦我按下/ home按鈕將應用程序保留在後臺,則停止顯示敬酒。當我再次將應用程序放到前臺時,再次烤麪包開始可見。
這個問題發生在罪惡的Kitkat。但在軟糖和下面,它的工作很好。
這是我的清單文件。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.rtrgroup.mysms"
android:installLocation="internalOnly">
<uses-sdk android:minSdkVersion="9"
android:targetSdkVersion="19"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true">
<activity
android:name="com.rtrgroup.mysms.MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name="com.rtrgroup.mysms.MyService"
android:enabled="true"
android:exported="true">
</service>
</application>
</manifest>
這是我的MainActivity.java文件。
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public void onStart() {
Intent serviceIntent = new Intent(this, MyService.class);
startService(serviceIntent);
}
}
這裏是我的服務代碼,MyService.java:
package com.rtrgroup.mysms;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.*;
import android.widget.Toast;
public class MyService extends Service {
Handler handler;
int count = 0;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
handler = new Handler();
handler.postDelayed(test, 1000);
return START_NOT_STICKY;
}
Runnable test = new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "TOAST count = " + String.valueOf(count), Toast.LENGTH_SHORT).show();
count++;
handler.postDelayed(test, 5000);
}
};
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
那麼,如何使麪包總是可見,即使該應用程序在後臺和服務正在運行?請解釋。如果你想,當用戶把你的應用程序在後臺檢測,覆蓋此方法
@Override
public void onTrimMemory(int level) {
super.onTrimMemory(level);
switch (level) {
case ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN:
// do your magic here
break;
}
}
,你也可以在「前臺」模式啓動的服務在本次檢查
爲什麼不使用通知?這是做到這一點的正確方法.. – Shmuel