从服务

时间:2017-01-01 06:54:49

标签: android animation android-activity service

活动类代码:

public class Content extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.animation_layout);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        ColorDrawable colorDrawable = new ColorDrawable(Color.TRANSPARENT);
        getWindow().setBackgroundDrawable(colorDrawable);

        Animation animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.zoom_out_bounce);
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                finish();
            }
        }, animation.getDuration());
    }

    @Override
    protected void onResume() {
        super.onResume();
        overridePendingTransition(0, R.anim.zoom_out_bounce);
    }
}

高于Activty在Service

上调用
public class LockScreenService extends Service {


    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    public void onStart(Intent intent, int i) {
        IntentFilter intentFilter = new IntentFilter("android.intent.action.SCREEN_ON");
        intentFilter.addAction("android.intent.action.SCREEN_OFF");
        intentFilter.addAction("android.intent.action.SCREEN_ON");
        registerReceiver(new LockScreenReceiver(), intentFilter);


    }

    @Override
    public void onCreate() {
        super.onCreate();

        IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
        filter.addAction(Intent.ACTION_SCREEN_OFF);
        filter.addAction(Intent.ACTION_BOOT_COMPLETED);

        //Set up a receiver to listen for the Intents in this Service
        receiver = new LockScreenReceiver();
        registerReceiver(receiver, filter);


        Intent i=new Intent(getApplicationContext(),Content.class);
        i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(i);
       //deviceManger.lockNow();
        });
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {

        return START_STICKY;
    }


    @Override
    public void onDestroy() {
        super.onDestroy();
    }

}

首先是代码完美但问题是,

[when my content activity start time animation can not work perfectly

有人可以回答我的问题吗?

1.我可以从服务开始活动吗?

2.我可以在从服务开始活动时设置动画吗?

1 个答案:

答案 0 :(得分:0)

是的,您可以从activity

开始service

android.app.Serviceandroid.app.Context的后代,因此您可以直接使用startActivity

尝试此代码以启动活动:

 @Override
public int onStartCommand(Intent intent, int flags, int startId) {
    Intent i = new Intent();
    i.setClass(this, Content.class);
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(i);
    return START_NOT_STICKY;
}

您还可以在活动从服务

开始时设置动画
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);

之后写下来
startActivity(i)