Android 学习历程之二 如何在一个Service中调用Activity(Intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK))
来源:互联网 发布:sai软件笔刷 编辑:程序博客网 时间:2024/05/08 04:02
在一个Service中调用一个Activity,因为没有上下文对象,会报 android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag 错误。解决办法,就是在创建一个新的Task任务(Intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)).
实例代码如下:
package com.yingliandroid_sdk_demo.EX_6;
import com.yingliandroid_sdk_demo.R;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MySetviceActivity extends Activity {
private Button startOn;
private Button endOff;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.service01);
startOn = (Button) findViewById(R.id.startOn);
endOff = (Button) findViewById(R.id.endOff);
startOn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MySetviceActivity.this, MyService01.class);
startService(intent);
}
});
endOff.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MySetviceActivity.this, MyService01.class);
stopService(intent);
}
});
}
}
package com.yingliandroid_sdk_demo.EX_6;
import android.app.Service;
import android.content.Intent;
import android.os.Handler;
import android.os.IBinder;
import android.provider.MediaStore.Video;
import android.util.Log;
public class MyService01 extends Service {
private Handler handler = new Handler();
private int intCountter = 0;
// private Runnable myTask = new Runnable() {
//
// @Override
// public void run() {
//
// intCountter++;
//
// Log.i("Hippo", "counter :"+Integer.toString(intCountter));
//
// handler.postDelayed(myTask, 1000);
// }
// };
public void onStart(Intent intent, int startId) {
// handler.postDelayed(myTask, 1000);
Log.i("ANDROID_INFO", "Service onStart:startID=" + startId);
Intent tancIntent = new Intent(getApplicationContext(),
TestActivity.class);
/**
* 关键代码,必须重启一个新任务
*/
tancIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(tancIntent);
Log.i("ANDROID_INFO", "Service onStart End");
};
@Override
public void onDestroy() {
super.onDestroy();
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
package com.yingliandroid_sdk_demo.EX_6;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
public class TestActivity extends Activity {
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout layoutParent = new LinearLayout(this);
LinearLayout.LayoutParams params1 = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
TextView textView = new TextView(this);
textView.setText("Show TestActivity");
textView.setTextSize(20.0f);
textView.setTextColor(0xff0000ff);
textView.setBackgroundColor(0xffffffff);
layoutParent.addView(textView);
// setContentView(textView);
setContentView(layoutParent);
}
}
- Android 学习历程之二 如何在一个Service中调用Activity(Intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK))
- 从Service中启动一个Activity需要加Intent.FLAG_ACTIVITY_NEW_TASK
- Android中intent启动Activity中intent.setFlags()的作用
- Android中intent启动Activity中intent.setFlags()的作用
- Android中intent启动Activity中intent.setFlags()的作用
- Android中intent启动Activity中intent.setFlags()的作用
- Android中intent启动Activity中intent.setFlags()的作用
- .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK));知多少
- android中Intent.setFlags()说明
- 在BroadcastReceiver中启动Activity,需为Intent添加Flag:Intent.FLAG_ACTIVITY_NEW_TASK
- android-Activity Intent.setFlags()与launchMode
- [android] Intent的setFlags
- Android Intent.setFlags()
- 如何在一个Service中调用Activity
- Activity启动模式intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- Intent.FLAG_ACTIVITY_NEW_TASK
- Intent.FLAG_ACTIVITY_NEW_TASK和android:taskAffinity
- 初始Android之Activity和Intent(二)
- AJAX 简介
- Android:SlidingDrawer
- WebLogic Server应用部署模式【stage】讲解
- Android开发之ListView 适配器(Adapter)优化
- excel 导出乱码问题
- Android 学习历程之二 如何在一个Service中调用Activity(Intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK))
- linux 动态库
- Google JavaScript 编码规范指南
- 全局变量可不可以定义在可被多个.C文件包含的头文件中?
- 关于robots.txt无法禁止收录的小看法
- oracle循环语句小结
- 钩子 添加额外菜单(dll)
- Java Socket 简单的Client/Server程序
- SAP系统常用变量