0

次の場合に Android アプリを自動的に起動したい:

  1. リブート
  2. タスク マネージャーまたは RAM クリアによってアプリが停止された

Web で検索したところ、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);
}

時刻表サービス :

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

}

}

4

2 に答える 2

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>
于 2015-01-28T12:16:21.123 に答える
0

AlarmManagerを使用して、特定の時間にアプリを実行するようにスケジュールすることを検討します。そうすれば、何かがアプリを閉じても関係ありません。アラーム マネージャーは、指定した時間にインテントでアプリを再び起動します。

于 2012-05-22T14:05:18.790 に答える