2

I'm running a demo example of cwac-locpoll. It is meant to log my position every minute in LocationLog.txt file. It works fine as long as app is on the screen, but if I press the home button it stops logging and when I return to application it reloads again. The same thing happend when I locked screen when it was running on screen, but I forced the app from sleeping with:

    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);

This, however did not solve the problem with running in background while I'm running other apps on the device. The device I'm using is Huawei Honor 7

The whole code of my MainActivity is as follows:

public class MainActivity extends AppCompatActivity {
private static final int PERIOD= 1000 * 60 * 1;  // 1 minute
private PendingIntent pi=null;
private AlarmManager mgr=null;
PowerManager pm;
PowerManager.WakeLock wl;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    final TextView test = (TextView) findViewById(R.id.testTV);
    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
    mgr=(AlarmManager)getSystemService(ALARM_SERVICE);

    Intent i=new Intent(this, LocationPoller.class);

    i.putExtra(LocationPoller.EXTRA_INTENT,
            new Intent(this, LocationReceiver.class));
    i.putExtra(LocationPoller.EXTRA_PROVIDER,
            LocationManager.GPS_PROVIDER);

    pi=PendingIntent.getBroadcast(this, 0, i, 0);
    mgr.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
            SystemClock.elapsedRealtime(),
            PERIOD,
            pi);

    Toast
            .makeText(this,
                    "Location polling every 1 minutes begun",
                    Toast.LENGTH_LONG)
            .show();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

}

grzeski
  • 21
  • 1

1 Answers1

0

The solution to my problem was easy. Search in your settings for Secured Applications, find your app and mark it as secured. It allows your app to run in background. Otherwise Huawei's task manager will keep killing it.

grzeski
  • 21
  • 1