在这个service中用这样的方法来启动一个activity,起到一个类似于对话框式的效果:
Intent t = new Intent(MainService.this, ToConfirmActivity.class);
        t.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(t);
要启动的activity的代码如下:
package com.example.borec;import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.Instrumentation.ActivityResult;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;public class ToConfirmActivity extends Activity {private Button twiceConfirm = null;
private Button toFinish = null;@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_to_confirm);
    Button twiceConfirm = (Button) findViewById(R.id.twiceConfirm);
    Button toFinish = (Button) findViewById(R.id.toFinish);    twiceConfirm.setOnClickListener(new twiceConfirmListener());
    toFinish.setOnClickListener(new toFinishListener());
}class twiceConfirmListener implements OnClickListener {    public void onClick(View v) {
        // TODO Auto-generated method stub
        Intent t = new Intent(ToConfirmActivity.this, WebViewActivity.class);
        t.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(t);
        finish();
    }}class toFinishListener implements OnClickListener {    public void onClick(View v) {
        // TODO Auto-generated method stub
        ToConfirmActivity.this.finish();
        ToConfirmActivity.this.onStop();
        ToConfirmActivity.this.onDestroy();
        Intent t = new Intent(ToConfirmActivity.this, MainService.class);
        System.out.println("*****");
        stopService(t);
        Intent tt = new Intent(ToConfirmActivity.this,
                GridLayoutActivity.class);
        startActivity(tt);
    }
}@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_to_confirm, menu);
    return true;
}
}现在的问题就是,要按这个结束服务按钮十多次才能完全结束这个activity,为什么?

解决方案 »

  1. 将ToConfirmActivity.this.finish();
            ToConfirmActivity.this.onStop();
            ToConfirmActivity.this.onDestroy();
            Intent t = new Intent(ToConfirmActivity.this, MainService.class);
            System.out.println("*****");
            stopService(t);
            Intent tt = new Intent(ToConfirmActivity.this,
                    GridLayoutActivity.class);
            startActivity(tt);改为:Intent t = new Intent(ToConfirmActivity.this, MainService.class);
    stopService(t);
    Intent tt = new Intent(ToConfirmActivity.this,GridLayoutActivity.class);
    startActivity(tt);int nPid = android.os.Process.myPid();
    android.os.Process.killProcess(nPid);
    finish();
    System.exit(0);
      

  2.         ToConfirmActivity.this.finish();
            ToConfirmActivity.this.onStop();
            ToConfirmActivity.this.onDestroy();还有这样的用法?
      

  3. 结束一个Activity的建议方法是,直接发一个intent过去,收到后自己杀死自己
      

类似问题 »