Ich möchte alle Tätigkeiten meine Anwendungen beenden von Rundfunkempfänger, wenn der Bildschirm ausgeschaltet ist: Zuerst habe ich eine statische Referenz in meine Aktivitäten wie folgt:Fertig Alle Aktivitäten von Rundfunkempfänger
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
public static AppCompatActivity ma;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//set instance of ma equals to MainActivity
ma=this;
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
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();
}
});
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
}
@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.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);
}
public void displayView(int viewId) {
Fragment fragment = null;
String title = getString(R.string.app_name);
switch (viewId) {
case R.id.monthly_figures:
fragment = new dailysales();
title = "Daily Figures";
break;
case R.id.nav_gallery:
fragment=new monthlysales();
title="Monthly Figures";
break;
}
if (fragment != null) {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.content_frame, fragment);
ft.commit();
}
// set the toolbar title
if (getSupportActionBar() != null) {
getSupportActionBar().setTitle(title);
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
}
dann Call ist aus meine BroadCastReceiver Klasse wie folgt:
public class SCBroadcaster extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(Intent.ACTION_SCREEN_OFF)){
MainActivity.ma.finish();
}
}
}
Glaubst du, es gibt noch einen besseren Weg? Ich habe versucht, System.Exit (0) oder process.killprocess (myPid) aufzurufen, aber wenn der Bildschirm wieder eingeschaltet wird, wird die gesamte Anwendung neu gestartet. Danke.
Können Sie Ihre gesamte "MainActivity" veröffentlichen? – user3793589
Ich nehme an, dass die Verwendung von System.Exit (0) kein gutes Verhalten für die App ist :). Für welche Zwecke möchten Sie Aktivitäten beenden? – comrade
Der Zweck, dass die Anwendung auf alle Arten geschlossen werden muss, auch wenn der Benutzer vergessen hat (wenn er das Telefon zur Seite legt), so wenn der Bildschirm ausgeschaltet ist alles geschlossen. – Albert