2016-04-30 3 views
-1

Я хочу начать сервис, если кнопка не была нажата, и если она только что оставила мою активность, а также я хочу, чтобы если пользователь заблокировал устройство (экран выключен), оставьте тоже. Я пробовал этот код при выходе из активности, если экран выключен, но он не оставил активности. Почему это произошло? И что мне делать, чтобы исправить это?Как завершить работу не запускать службу

Мой код:

public class MyActivity extends Activity{ 
    boolean finishOrNot = false; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     Log.i("Point", "yes1"); 
     if (getIntent().getBooleanExtra("Exit",false)==true){ 
      finishOrNot = true; 
      Log.i("Point","yes"); 
     } else if(getIntent().getBooleanExtra("Exit",false)==false){ 
      Log.i("Point","No"); 
     } 

     //finishOrNot = true; 
     Log.i("Point", "User started app"); 
     final EditText editText1 = (EditText) findViewById(R.id.editText); 
     ImageButton imageButton = (ImageButton) findViewById(R.id.imageButton); 
     imageButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       //startService(new Intent(MainActivity.this, MyService.class)); 
       String phoneNumber = editText1.getText().toString(); 
       Log.i("Number", phoneNumber); 
       Intent callIntent = new Intent(Intent.ACTION_CALL); 
       callIntent.setData(Uri.parse("tel:" + phoneNumber)); 
       startActivity(callIntent); 
       finishOrNot = true; 
      } 
     }); 

    } 

    @Override 
    protected void onUserLeaveHint() { 
     if (finishOrNot==false){ 
      finish(); 
      Log.i("Point","finishOrNot == false"); 
     } else{Log.i("Point","finishOrNot == true");} 
     super.onUserLeaveHint(); 
    } 

    @Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     //startActivity(new Intent(MyActivity.this,MyActivty.class)); 
     Log.i("Point", "MyActivity onDestroy"); 
     if (finishOrNot == false) { 
      startService(new Intent(MyActivity.this, MyService.class)); 
     }else if(finishOrNot==true) { 
      Log.i("Point","fon=true"); 
     } 
    } 
} 

И мой LogCat:

04-30 05:53:30.190 14030-14030/com.example.amadey.myapplication5 I/Point﹕ yes1 
04-30 05:53:30.190 14030-14030/com.example.amadey.myapplication5 I/Point﹕ No 
04-30 05:53:30.200 14030-14030/com.example.amadey.myapplication5 I/Point﹕ User started app 
04-30 05:54:17.560 14030-14030/com.example.amadey.myapplication5 I/Point﹕ EndReceiver 
04-30 05:54:18.300 14030-14030/com.example.amadey.myapplication5 I/Point﹕ finishOrNot == false1 
04-30 05:54:18.780 14030-14030/com.example.amadey.myapplication5 I/Point﹕ yes1 
04-30 05:54:18.780 14030-14030/com.example.amadey.myapplication5 I/Point﹕ yes 
04-30 05:54:18.990 14030-14030/com.example.amadey.myapplication5 I/Point﹕ User started app 
04-30 05:54:19.410 14030-14030/com.example.amadey.myapplication5 I/Point﹕ finishOrNot == true1 
04-30 05:54:20.750 14030-14030/com.example.amadey.myapplication5 I/Point﹕ MyActivty 
04-30 05:56:38.920 14030-14030/com.example.amadey.myapplication5 I/Point﹕ finishOrNot == true1 
04-30 05:56:46.120 14030-14030/com.example.amadey.myapplication5 I/Point﹕ MyActivity onDestroy 
04-30 05:56:47.010 14030-14030/com.example.amadey.myapplication5 I/Point﹕ MyService 

Спасибо.

+0

Тема должна быть закрыта, пожалуйста, примите ответ –

ответ

1

Вы можете закончить активность с вызовом:

finish(); 
Call this when your activity is done and should be closed. 
0

Попробуйте закончить деятельность в то время как экран в выключенном режиме.

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.content.IntentFilter; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.util.Log; 
import android.widget.Toast; 

/** 
* Created by moorthy on 4/30/2016. 
*/ 
public class SampleActivity extends AppCompatActivity { 

private BroadcastReceiver mScreenStateReceiver = null; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    mScreenStateReceiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 

      if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { 
       Log.i("Check", "Screen went OFF"); 
       Toast.makeText(context, "screen OFF", Toast.LENGTH_LONG).show(); 
       //Here you can finish you activity 
       finish(); 
      } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { 
       Log.i("Check","Screen went ON"); 
       Toast.makeText(context, "screen ON",Toast.LENGTH_LONG).show(); 
      } 
     } 
    }; 

} 


@Override 
protected void onResume() { 
    super.onResume(); 
    IntentFilter screenStateFilter = new IntentFilter(); 
    screenStateFilter.addAction(Intent.ACTION_SCREEN_ON); 
    screenStateFilter.addAction(Intent.ACTION_SCREEN_OFF); 
    registerReceiver(mScreenStateReceiver, screenStateFilter); 
} 
} 
0

Это также работают хорошо

moveTaskToBack(true); 
finish(); 

двигаться задача поддержать ее закончить приложение, но до сих пор в памяти.

Смежные вопросы