0

その時の電話/タブレットのバッテリー状態を表示するアプリケーションに取り組んでいます。私はそれをそのまま実行して動作させていますが、画面がオフになっていると、どういうわけかアプリケーションは「強制終了」されます。

奇妙なことに、それは私のLG電話では殺されますが、画面がオフ/ロックされているときは私のGalaxyタブでは殺されません。

ソースコードは次のとおりです。

public class BatteryLevelActivity extends Activity {
    private TextView batterLevel;
    CharSequence tickerText = "No need to charge at the moment";

public void onCreate(Bundle SavedInstanceState) {
    super.onCreate(SavedInstanceState);
    setContentView(R.layout.main);
    this.registerReceiver(this.mBatInfoReceiver, new IntentFilter(
            Intent.ACTION_BATTERY_CHANGED));
    batterLevel = (TextView) findViewById(R.id.batteryLevel);
};

private void notif(int level) {
    String ns = Context.NOTIFICATION_SERVICE;
    NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);

    int icon;

    long when = System.currentTimeMillis();

    Notification notification = new Notification(icon, tickerText, when);

    Context context = getApplicationContext();
    CharSequence contentTitle = "BatteryWatch";
    CharSequence contentText = "Remaining charge level is " + level + "%";
    Intent notificationIntent = new Intent();
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
            notificationIntent, 0);

    notification.setLatestEventInfo(context, contentTitle, contentText,
            contentIntent);

    notification.flags |= Notification.FLAG_FOREGROUND_SERVICE;
    notification.flags |= Notification.FLAG_ONGOING_EVENT;

    final int HELLO_ID = 1;

    mNotificationManager.notify(HELLO_ID, notification);

}

private BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context arg0, Intent intent) {
        int level = intent.getIntExtra("level", 0);
        batterLevel.setText("Battery level is at " + level + "%\n\n"
                + tickerText);
        notif(level);
        tickerText = "";

    }
};

}

どういうわけか、「onScreenOff」または「onScreenOn」のようなメソッドが必要だと思います。そうすれば、アプリケーションをリロードできますが、画面がオフのときに実行する方法についての提案を受け付けています。ロックされています。

前もって感謝します

4

1 に答える 1

2

サービスを長期間実行したいので、おそらくサービスの使用を検討することをお勧めします。ここの開発者ガイドで詳細を説明しています。また(リンクは見つかりませんが)、アプリを強制終了する必要がある場合は、アプリを再起動する必要があることをAndroidに通知したいと思います。これが何と呼ばれているのか正確には思い出せません

**追加情報**上記で少し間違った情報を提供しました。Androidがサービスを強制終了した後、サービスを再開することはできますが、アクティビティを再開することはできないと思います。サービスの開発者ガイドについては、上記のリンクで詳しく説明されています。これは、スティッキーとしてサービスを開始することと呼ばれます。サブセクション「サービスクラスの拡張」を参照してください。

于 2012-06-15T20:21:27.480 に答える