自动启动应用

时间:2012-05-22 13:15:20

标签: android android-intent android-service

我想在以下情况下自动启动我的Android应用程序:

  1. 重新启动
  2. 通过TaskManager或Ram清除应用程序
  3. 我在网上搜索并找到有关Android服务的内容。 我实现了一些代码,用于在重新启动时启动我的服务,但我不工作,我不知道如何获知有关案例2的信息。

    你能给我一个建议吗?

    这是我的服务代码:

    <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);
    }
    

    时刻表服务:

     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();
    
    }
    

    }

2 个答案:

答案 0 :(得分:0)

我会考虑使用AlarmManager安排您的应用在一天中的特定时间运行。这样,如果某些东西关闭你的应用程序并不重要,警报管理器会在你指定的时候再次唤醒它。

答案 1 :(得分: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>