android:将两个类合并到一个activity中有什么合适的方法?

问题描述

android:将两个类合并到一个activity中有什么合适的方法?
我有两个类,一个是MainActivity扩展了activity,另外一个是AlarmReceiver扩展了BroadcastReceiver。我怎么能够消除AlarmReceiver,而是在MainActivity实现这个功能?我知道不可能同时扩展两个类,所以我想知道最好的方法应该是什么?

MainActivity

public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        scheduleNextUpdate();         Streamer str = new Streamer();            Calendar calendar = str.getIcs();        int x = 1;        LinearLayout layout = (LinearLayout)findViewById(R.id.layout);        for (Iterator i = calendar.getComponents().iterator(); i.hasNext();) {            Component component = (Component) i.next();            TextView tv_1 = new TextView(this);            layout.addView(tv_1);            tv_1.setText(""Component "" + x);            x++;;            for (Iterator j = component.getProperties().iterator(); j.hasNext();) {                Property property = (Property) j.next();                TextView tv_2 = new TextView(this);                layout.addView(tv_2);                tv_2.setText(property.getName() + "": "" + property.getValue());            }        }    }    public void scheduleNextUpdate()      {        Intent intent = new Intent(MainActivity.thisAlarmReceiver.class);        PendingIntent pendingIntent =            PendingIntent.getBroadcast(this 0 intent PendingIntent.FLAG_UPDATE_CURRENT);        long currentTimeMillis = System.currentTimeMillis();        long nextUpdateTimeMillis = (currentTimeMillis *2) + DateUtils.MINUTE_IN_MILLIS;        Time nextUpdateTime = new Time();        nextUpdateTime.set(nextUpdateTimeMillis);        if (nextUpdateTime.hour < 8 || nextUpdateTime.hour >= 22)        {          nextUpdateTime.hour = 8;          nextUpdateTime.minute = 0;          nextUpdateTime.second = 0;          nextUpdateTimeMillis = nextUpdateTime.toMillis(false) + DateUtils.DAY_IN_MILLIS;        }        AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);       // alarmManager.set(AlarmManager.RTC nextUpdateTimeMillis pendingIntent);        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP System.currentTimeMillis()+1000060000pendingIntent);        Streamer str = new Streamer();        boolean alarmUp = (PendingIntent.getBroadcast(this 0                 new Intent(MainActivity.thisAlarmReceiver.class)                 PendingIntent.FLAG_NO_CREATE) != null);        if (alarmUp)        {            Log.d(""myTag""Alarm is already active"");        }        System.out.println(currentTimeMillis);      }

AlarmReceiver

public class AlarmReceiver extends BroadcastReceiver {    @Override     public void onReceive(Context context Intent intent) {          Log.d(""myTag""Alarm has been received"");    intent = new Intent(context MainActivity.class);    PendingIntent pendingIntent = PendingIntent.getService(context 0 intent 0);     Streamer str = new Streamer();        Calendar calendar = str.getIcs();        System.out.println(calendar);}}

解决方案

你可以在你的activity注册BroadcastReceiver然后在onPause注销

public class MainActivity extends Activity {    private BroadcastReceiver receiver = new BroadcastReceiver() {        @Override        public void onReceive(Context context Intent intent) {            Toast.makeText(getApplicationContext()received"" Toast.LENGTH_SHORT).show();        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        Intent intent = new Intent(""TESTING"");        PendingIntent pendingIntent = PendingIntent.getBroadcast(this 0 intent PendingIntent.FLAG_UPDATE_CURRENT);        AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP System.currentTimeMillis() + 5000 10000 pendingIntent);    }    @Override    protected void onResume() {        super.onResume();        registerReceiver(receiver new IntentFilter(""TESTING""));    }    @Override    protected void onPause() {        unregisterReceiver(receiver);        super.onPause();    }}
时间: 2024-10-02 22:01:36

android:将两个类合并到一个activity中有什么合适的方法?的相关文章

有两个Dataset1和dataset2,他们的datatabe结构相同, 能不能把这两个dataset合并成为一个呢?

问题描述 有两个Dataset1和dataset2,他们的datatabe结构相同,能不能把这两个dataset合并成为一个呢?比如说,他们的datatable的结构是name,age,address.我如何才能把他们合并. 解决方案 解决方案二:用一个DataSet,向DataSet添加一个DataTalbe就可以佬解决方案三:引用1楼bugttp的回复: 用一个DataSet,向DataSet添加一个DataTalbe就可以佬 解决方案四:用一个DataSet,里面添加两个DataTable

Android手机app启动的时候第一个Activity必须是MainActivity吗

原文:Android手机app启动的时候第一个Activity必须是MainActivity吗 Android手机APP启动的第一个Activity是可以自己设置的,不是必须的MainActivity,可以是任何的Activity. 设置Android手机APP启动的第一个Activity得看Android项目里的mainfest.xml文件: android.name属性值是由包名(com.example.login)+启动的Activity类名(Login)组成的,如果要修改APP启动的第一

多个视频同时显示-Android多个视频监控在通一个Activity显示的问题

问题描述 Android多个视频监控在通一个Activity显示的问题 我需要做一个监控视频的app,我一个界面想同时播放四个视频,于是我创建了四个surfaceview来播放,但是我同时去设置四个去播放时,最终只能显示一个.求各位大师解决. 解决方案 你可以试试使用VideoView来播放来尝试一下,serfaceView的特性是相对于整个手机屏幕来的.

Android解决dialog弹出时无法捕捉Activity的back事件的方法

  本文实例讲述了Android解决dialog弹出时无法捕捉Activity的back事件的方法.分享给大家供大家参考.具体分析如下: 在一些情况下,我们需要捕捉back键事件,然后在捕捉到的事件里写入我们需要进行的处理,通常可以采用下面三种办法捕捉到back事件: 1)重写onKeyDown或者onKeyUp方法 2)重写onBackPressed方法 3)重写dispatchKeyEvent方法 这三种办法有什么区别在这里不进行阐述,有兴趣的朋友可以查阅相关资料. 然而在有dialog弹出

Android解决dialog弹出时无法捕捉Activity的back事件的方法_Android

本文实例讲述了Android解决dialog弹出时无法捕捉Activity的back事件的方法.分享给大家供大家参考.具体分析如下: 在一些情况下,我们需要捕捉back键事件,然后在捕捉到的事件里写入我们需要进行的处理,通常可以采用下面三种办法捕捉到back事件: 1)重写onKeyDown或者onKeyUp方法 2)重写onBackPressed方法 3)重写dispatchKeyEvent方法 这三种办法有什么区别在这里不进行阐述,有兴趣的朋友可以查阅相关资料. 然而在有dialog弹出时,

asp.net网站-ASP.NET怎么把两个网站合并成一个

问题描述 ASP.NET怎么把两个网站合并成一个 做了一个中文网站,一个英文的,怎么把这俩网站合并成一个运行,web.config文件怎么配置,数据库怎么办?求指教. 解决方案 收藏两个学习asp.net 的好网站 解决方案二: http://www.cnblogs.com/wenjl520/archive/2010/10/17/1853367.html 解决方案三: 一个网站,支持多语言不就行了

将两个DataTable合并成一个DataTable

//1.两个结构一样的DT合并DataTable DataTable1 = new DataTable();DataTable DataTable2 = new DataTable();DataTable newDataTable = DataTable1.Clone(); object[] obj = new object[newDataTable.Columns.Count];for (int i = 0; i < DataTable1.Rows.Count; i++){    DataTa

C#如何将两个XmlDocument合并为一个XmlDocument

XmlDocument xd = new XmlDocument(); //添加顶级结点(如果不添加一个节点的话,无法使用xd.DocumentElement.AppendChild,会报出:未将对象引用设置到对象的实例的错误) XmlElement xe = xd.CreateElement("XmlDocumentTest"); xd.AppendChild(xe); //第一个XmlDocument:vsXmlDocument1 XmlNode xnDesi = xd.Impor

C# linq 两个表,列名一样,但数据无关联,想合并为一个表

问题描述 C# linq 两个表,列名一样,但数据无关联,想合并为一个表 我有两个表 ,里面的列名结构都是一样的,但是id等数据都是不一样,我想将这两个表合并为一个表,在页面上显示.我是将这两个表都放进各自的泛型集合里,但是就变成两个类型了,如何将这两个表合并成一个表呢?或者用linq的话怎么写呢,这两表之间没什么关联,单纯只是想合并成一个表而已?求教~~~ (只是想在查询时,将这两个表合并为一个表进行查询,并不想更改这两个表的数据) 解决方案 左边或者右边select转换成另一个类型,然后co