2012-05-22 195 views
0

我想自動啓動我的Android應用程序在下列情況:啓動應用程序會自動

  1. 重啓
  2. 應用進行了採空通過量任務管理器或RAM清除

我搜索的網頁,發現東西約Android的服務。 我執行一些代碼重新啓動時啓動我的服務,但我不工作,我不知道如何得到有關情況2的消息。

你能給我一個建議嗎?

這是我的服務代碼:

上的manifest.xml

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 


<service android:name="TimetableService"> 
<intent-filter> 
    <action android:name=".TimetableService" /> 
</intent-filter> 
</service> 

<receiver android:enabled="true" android:name=".OnBootReceiver" android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> 
    <intent-filter> 
     <action android:name="android.intent.action.BOOT_COMPLETED" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</receiver> 

OnBootReceiver:

public void onReceive(Context context, Intent intent) 
{ 
    Intent serviceIntent = new Intent(); 
    serviceIntent.setAction("TimetableService"); 
    context.startService(serviceIntent); 
} 

TimetableService:

public class TimetableService extends Service 
{ 

@Override 
public IBinder onBind(Intent intent) { 

    return null; 

} 

@Override 
public void onCreate() { 
    super.onCreate(); 

    Toast.makeText(this, "Service Created", Toast.LENGTH_LONG).show(); 

} 

@Override 
public void onDestroy() { 
    super.onDestroy(); 

    Toast.makeText(this, "Service Destroyed", Toast.LENGTH_LONG).show(); 

} 

@Override 
public void onStart(Intent intent, int startId) { 

    super.onStart(intent, startId); 

    Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show(); 

} 

}

+1

[檢查這一個,並得到它的工作(http://stackoverflow.com/questions/7690350/android-start-service-on-boot/7690600#7690600) –

+1

通常,在TaskManager停止服務後,您不應該啓動它。這是一個糟糕的機器人公民。 – CodeFusionMobile

+0

@ CodeFusionMobile:好的,但是如何確保我的應用程序在每次不運行時都能正常工作,因爲如果我必須發送通知,我必須每天檢查(或者用戶選擇哪個) – Kooki

回答

0

我會考慮使用AlarmManager來安排您的應用程序在一天的特定時間運行。這樣,關閉應用程序就無關緊要了,警報管理器會在您指定的時間再次將其喚醒。

0

讓我們用服務來自動啓動應用程序現在

當引導完成後,你可以使用下面的代碼重新啓動服務。

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 

public class MyStartupIntentReceiver extends BroadcastReceiver{ 
@Override 
public void onReceive(Context context, Intent intent) { 
// check for interreupted flag in shared pref 
// if true restart your service 
} 
} 
下面的代碼

添加您的清單

<receiver android:name="MyStartupIntentReceiver"> 
<intent-filter>  
<action 
android:name="android.intent.action.BOOT_COMPLETED" /> 
<category android:name="android.intent.category.HOME" /> 
</intent-filter> 
</receiver>