Android overridePendingTransition()从服务启动时无法正常工作
活动类别代码:Android overridePendingTransition()从服务启动时无法正常工作,android,animation,android-activity,service,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(Wind
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);
}
}
在服务上调用上述活动
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();
}
}
最重要的是,代码工作得很完美,但问题是
[
有人能回答我的问题吗
1.我可以从服务开始活动吗
2.当活动从服务启动时,我可以设置动画吗?是,您可以从服务启动活动
android.app.Service
是android.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)
是,您可以从服务
android.app.Service
是android.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)
发布您的服务类别代码..请参阅..我编辑的我的问题..发布您的服务类别代码..请参阅..我编辑的我的问题..是的..我在我的项目中包含了此代码,但仍然不起作用。目前我的问题是..如何解决上述错误..imgae上显示的是谁…(如何从服务设置当前屏幕的动画?)@KalsariyaDevindra改为在onStartCommand方法中调用startActivity…每当客户端调用startService()时,都会调用onStartCommand()。是的…我的项目中也包含了这段代码,但目前它仍然不起作用。我的问题是…如何解决上述错误…imgae上显示的是谁…(如何从服务中设置当前屏幕的动画?)@KalsariyaDevindra在onStartCommand方法中调用startActivity…每当客户端调用startService()时,都会调用onStartCommand()。